jpa中persistence.xml配置:
<properties>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>
其中第二個配置項的value可取值:
validate 加載hibernate時,驗證創建數據庫表結構
create 每次加載hibernate,重新創建數據庫表結構,這就是導致數據庫表數據丟失的原因。
create-drop 加載hibernate時創建,退出是刪除表結構
update 加載hibernate自動更新數據庫結構
none 應該是不做任何操作
JPA:用於規範現有的ORM技術,面對JPA規範編程,是一種標準,而如hibernate、JDO、Toplink則是對應的產品
包括3方面的技術:
1、ORM映射元數據:支持XML和JDK5.0註解,元數據描述對象和表之間的映射關係
2、Java持久化API:操作實體對象,執行CRUD操作
3、查詢語言JPQL:
hibernate核心包:distribution,註解包:annotations以及針對JPA的實現包entitymanager
事務類型:本地事務和全局事務
轉賬:1、mysql 2、Oracle
1>update mysql set amount=amount-XX where id = XXX(mysql)
2>update mysql set amount=amount+XX where id = YYY(Oracle)
使兩個語句在同一事務中執行
jdbc時需要設置連接
connection1-->mysql,connection1.setAutoCommit(false),
connection2-->oracle,connection2.setAutoCommit(false),
執行語句,
再Commit
但一個事務只能在一個connection中提交,所以就需要全局事務
全局事務:
JTA.getUserTransaction().begin();
執行操作
JTA.getUserTransaction().commit);
2次提交協議:先預提交數據庫,數據庫返回提交結果boolean值,如果所有操作都是true,則真正提交,否則事務失敗,回滾
GenerationType.TABLE以表的方式生成組件值(還不清楚)