600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Spring + hibernate + JPA 配置

Spring + hibernate + JPA 配置

时间:2019-11-28 01:10:42

相关推荐

Spring + hibernate + JPA 配置

最近对hibernate的JPA实现比较感兴趣,在此记录下配置方法,备查。

先上maven依赖包配置,这里使用的是spring3.1.2和hibernate3.6.0

<dependencies><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>3.6.0.Final</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>3.1.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>3.1.2.RELEASE</version></dependency><dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>sqljdbc</artifactId><version>4.0</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.6.1</version></dependency><dependency></dependencies>

然后是spring配置 applicationContext.xml,需要注意的是此处数据源是JNDI,在生产环境下建议使用此方式,而不建议使用properties文件,因为提供给实施人员的代码都是各种war包,别人不可能剥开你的war包来修改properties。而是直接改中间件的数据源配置。其他一些配置如路径之类的最好都交给容器来配置,而不要把经常改动的配置文件放在工程里。

<jee:jndi-lookupid="mssql"jndi-name="jdbc/test"/><beanid="emf"class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><propertyname="dataSource"ref="mssql"></property><propertyname="persistenceUnitName"value="sample"></property></bean><beanid="transactionManager"class="org.springframework.orm.jpa.JpaTransactionManager"><propertyname="entityManagerFactory"ref="emf"/></bean><mvc:annotation-driven/><tx:annotation-driven/>

最后是JPA配置 类路径下META-INF/persistence.xml,多个数据库方言,请配置多个单元!

<?xmlversion="1.0"encoding="UTF-8"?><persistencexmlns="/xml/ns/persistence"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/persistence/xml/ns/persistence/persistence_2_0.xsd"version="2.0"><persistence-unitname="sample"transaction-type="RESOURCE_LOCAL"><provider>org.hibernate.ejb.HibernatePersistence</provider><properties><propertyname="hibernate.dialect"value="org.hibernatespatial.sqlserver.SQLServerSpatialDialect"/><propertyname="hibernate.show_sql"value="true"/><propertyname="hibernate.hbm2ddl.auto"value="update"/></properties></persistence-unit></persistence>

在JAVA bean中注入JPA的EntityManager对象,以DAO为例,如此就能在spring中正确集成JPA了

@TransactionalpublicabstractclassBaseDao<T>implementsIBaseDao<T>{@PersistenceContextprotectedEntityManagerem;...}

最后,谈下个人的理解,JPA相比与hibernate独有的sessionFactory来讲更有利于ORM开发。最近在看的GraniteDS就比较推荐使用JPA的方式做ORM。到底好不好,还有待后续的积累来验证。

做ORM的目的主要还是一个,就是代码的简洁灵活。目前公司使用的还是spring的jdbcTemplate,要自行管理SQL语句,做CRUD操作以及生成对象或集合要相对繁琐。而且当工程量大了以后,SQL语句的维护是一件麻烦的事情。不如hibernate之类来的快。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。