jpa杂记

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以表的方式生成组件值(还不清楚)

你可能感兴趣的:(数据结构,oracle,mysql,Hibernate,jpa)