读书人

jpa散文

发布时间: 2012-08-31 12:55:03 作者: rapoo

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

读书人网 >软件架构设计

热点推荐