spring+jpa(hibernate)框架搭建.pdf
-
资源ID:76252265
资源大小:25.70KB
全文页数:7页
- 资源格式: PDF
下载积分:20金币
快捷下载

会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
spring+jpa(hibernate)框架搭建.pdf
Hibernate 的作者目前在为EJB工作,EJB的实体 BEAN刚好被 JPA所代替。JPA的思想和Hibernate 中的思想极为相似,将普通Hibernate 升级为满足JPA规范的 ORM 也是非常方便的。使用 JPA的好处在于:JPA致力于建立ORM 的行业标准,大有一统天下的野心,况且也是 SUM公司的项目。将代码符合JPA规范,有利于移植到其它实现了JPA规范的 ORM 框架。在大型项目中与EJB配合,可以部署在分布式的应用中。Hibernate 使用 JPA的步骤:1、将繁琐的映射xml 文件由 JAVA注释代替。比如将 User 和 Organization 的映射 xml 转换为注释(User 和 Role的多对多关系不考虑):User.hbm.xml 内容如下:Organization.hbm.xml 内容如下:改成注释形式如下:User 类:EntityTable(name=user010t)publicclass User IdGeneratedValue(strategy=GenerationType.IDENTITY)private Long id;Column(name=userID,unique=true,nullable=false)private String userID;Column(name=username,unique=false,nullable=false)private String username;Column(name=password,unique=false,nullable=false)private String password;ManyToOne(cascade=CascadeType.PERSIST,CascadeType.MERGE)JoinColumn(name=OrganizationID)private Organization organization;一系列的setter和 getter省略 Organization类如下:EntityTable(name=organization010t)publicclassOrganization IdGeneratedValue(strategy=GenerationType.IDENTITY)private Long id;Column(name=name,unique=false,nullable=false)private String name;OneToMany(mappedBy=organization,fetch=FetchType.LAZY)private Setusers;部分成员变量以及一系列的setter和 getter省略 懂 XML 配置的话,这些注释应该很明白意思,不过多解释。不过有一点值得说明,inverse属性在注释中是没有的,它是默认为true 的,参考的对象则是相对于mappedBy 指定的对象。然后就可以将以前的映射xml 文件删除了。2、在 class文件夹下建立/META-INF/persistence.xml 文件,进行JPA的相关配置内容如下:org.hibernate.ejb.HibernatePersistencecom.wu.myApplication.domain.Usercom.wu.myApplication.domain.Organization其他省略如果这里没有使用spring 的话,可以把数据库连接的相应信息配置进来。因为这里使用了spring 管理,所以配置在spring 中了。如果以后做分布式数据库,那么可以配置多个persistence-unit属性。transaction-type=RESOURCE_LOCAL支持 JTA事务管理和RESOURCE_LOCAL事务管理。如果用了EJB容器,如果做分布式应用的话,好像事务管理只能用JTA。这点不是太清楚,没有做过。class属性配置需要映射的类3、修改 applicationContext.xml 内容如下:com.microsoft.sqlserver.jdbc.SQLServerDriver!-jdbc:sqlserver:/localhost:1433;DatabaseName=hbSystem-jdbc:sqlserver:/localhost:1433;SelectMethod=cursor;DatabaseName=myApplicationsa 1988125352!-其他省略 数据源的配置不变,SessionFactory换成了LocalContainerEntityManagerFactoryBean而且必须注入HibernateJpaVendorAdapter不然在事务管理service 层的时候不起作用。采用注释的方式声明事务管理,在需要事务管理的方法前加注释,如下:TestTransactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)publicvoiduserOrganizationSaveTest()方法内容省略注释中的 Propagation.REQUIRED 表示如果transactionManager没有开启事务则新建事务,否则用现有事务。注释中的rollbackFor=Exception.class表示抛出异常时回滚事务。如果使用了多个数据库,那么就必须使用AOP 的方式进行事务的管理。到此为止,不是分布式应用的spring+jpa(hibernate)的框架就搭建完成了。