今天第一次用hibernate ,發(fā)現(xiàn)用起來(lái)比較繁瑣,不知道大家感覺(jué)怎么樣...
首先是我遇到數(shù)據(jù)庫(kù)復(fù)合主鍵的問(wèn)題:
<hibernate-configuration>
<session-factory>
<property name="connection.username">root</property>
<property name="connection.url">jdbc:mysql://localhost/netshop</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hbm2ddl.auto">update</property>
<property name="connection.password">a123456</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="show_sql">true</property>
<mapping resource="WebService/Orders_detail.hbm.xml" />------------------------------這里第一次的時(shí)候忘了加了
</session-factory>
</hibernate-configuration>
<hibernate-mapping>
<class name="WebService.Orders_detail" table="orders_detail"> <!-- 類和表對(duì)應(yīng) -->-------------
WebService.Orders_detail類中必須有一個(gè)默認(rèn)無(wú)參構(gòu)造函數(shù),否則會(huì)出現(xiàn)CGLIB Enhancement failed。。。錯(cuò)誤
<composite-id name="pk" class="WebService.Orders_detailpk>--------------------------------
一開(kāi)始class屬性沒(méi)寫(xiě),找了半天才發(fā)現(xiàn)錯(cuò)誤
<key-property name="orderid" column="orderid" ><!-- 主鍵 -->
<!-- <generator class="assigned" /> --><!-- 主鍵生成策略,assigned表示由用戶賦值 -->
</key-property>
<key-property name="rnum" column="rnum" ><!-- 主鍵 -->
<!-- <generator class="assigned" /> --><!-- 主鍵生成策略,assigned表示由用戶賦值 -->
</key-property>
</composite-id>
<property name="goods_id" column="goods_id"/>
<property name="goods_name" column="goods_name"/>
<property name="goods_price" column="goods_price"/>
<property name="qty" column="qty"/>
</class>
</hibernate-mapping>
配置文件寫(xiě)好后,在類中可以這樣調(diào)用:
Configuration conf = new Configuration().configure();
SessionFactory sf = conf.buildSessionFactory();
Session session = sf.openSession();
Orders_detailpk pk=new Orders_detailpk();
pk.setOrderid("10202321");
pk.setRnum(5);
Orders_detail order=(Orders_detail)session.load(Orders_detail.class,pk);
System.out.println(order.getGoods_id());
System.out.println(order.getGoods_name());
System.out.println(order.getGoods_price());
System.out.println(order.getQty());
總結(jié):hibernate用起來(lái)似乎沒(méi)發(fā)現(xiàn)很方便。。