今天第一次用hibernate ,發現用起來比較繁瑣,不知道大家感覺怎么樣...
首先是我遇到數據庫復合主鍵的問題:
<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" />------------------------------這里第一次的時候忘了加了
</session-factory>
</hibernate-configuration>
<hibernate-mapping>
<class name="WebService.Orders_detail" table="orders_detail"> <!-- 類和表對應 -->-------------
WebService.Orders_detail類中必須有一個默認無參構造函數,否則會出現CGLIB Enhancement failed。。。錯誤
<composite-id name="pk" class="WebService.Orders_detailpk>--------------------------------
一開始class屬性沒寫,找了半天才發現錯誤
<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>
配置文件寫好后,在類中可以這樣調用:
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());
總結:hibernate用起來似乎沒發現很方便。。