Spring4和Hibernate4整合小结
来源:互联网 发布:武术 知乎 编辑:程序博客网 时间:2024/04/27 13:36
—以前学习的都是hibernate3,而hibernate5早都已经出现了,技术在不断的更新,不求最新版本,但是自己的技术也需要不断更新。
—网上大部分的配置都是hibernate3的,而且非常杂,都需要自己不断的尝试,记录一下自己尝试的过程。如果大家见到了我的文章,有什么不对的还请多多指教。
1、jar包的引入
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <hibernate.version>4.1.6.Final</hibernate.version> <spring.version>4.1.9.RELEASE</spring.version> <struts.version>2.5.10.1</struts.version> <slf4j.version>1.7.25</slf4j.version> <log4j.version>2.8.1</log4j.version></properties><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.43</version></dependency><dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.9</version></dependency><dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version></dependency><!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency>
1、spring配置
hibernate没有单独用配置文件,全部集中在Spring配置文件中,采用了Druid数据连接池(网上说是最好的连接池),配置在Spring中。
(1)配置数据连接池:
<!-- 加载jdbc.properties文件 --> <context:property-placeholder location="classpath:jdbc/jdbc.properties" /><!-- 配置数据源 Druid --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="url" value="${jdbcUrl}" /> <property name="driverClassName" value="${jdbcDriverClassName}" /> <property name="username" value="${jdbcUsername}" /> <property name="password" value="${jdbcPassword}" /> <property name="initialSize" value="${jdbcInitialSize}" /> <property name="maxActive" value="${jdbcMaxActive}" /> <property name="maxWait" value="${jdbcMaxWait}" /> </bean>
首先加载jdbc.properties,在文件中编写,可以有利于控制不同数据库。
(2)配置sessionFactory:
<!-- 配置sessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hiberante.format_sql">true</prop> <prop key="hibernate.autoReconnect">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> <!--注解方式--> <!-- 扫描实体类注解,将会被解析成classpath:com/epoint/oa/*/domain/*.class --> <property name="packagesToScan"> <value>com.epoint.oa.*.domain</value> </property> <!--xxx.hbm.xml方式--> <!-- <property name="mappingDirectoryLocations"> <list> <value>classpath:com/epoint/oa/person/domain</value> </list> </property> --> </bean>
注意,在hibernate3的时候需要配置,而hibernate4不能配置,hibernate4不用hibernateTamplate,用getCurrentSession:
<!-- hibernate4不能配置下面的东西 --> <!-- <prop key="hibernate.current_session_context_class">thread</prop> -->
(3)配置声明式事务管理:
<!-- 事务管理 --> <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean><!--开启注解支持--> <tx:annotation-driven transaction-manager="txManager"/>
hibernate4配置了事务必须在方法上加上@Transactional注解,必须在有事务的情况下才能执行,否则将会报以下错误: org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread
而且Dao层需要用sessionFactory.getCurrentSession,如果用openSession的话这增删改不成功,因为没有事务支持,需要手动开事务。
2、hibernate注解的配置
以一个Person实体类为例进行注解配置:
@Entity@Table(name="t_table")public class Person implements Serializable{ private static final long serialVersionUID = -3644583604873429694L; @Id @GeneratedValue(generator="uuid") @GenericGenerator(name = "uuid", strategy = "uuid") private String pid; @Column(name="name",nullable=false,length=40) private String name; @Column(name="sex",nullable=false,length=40) private String sex; public String getPid() { return pid; } public void setPid(String pid) { this.pid = pid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; }}
!—–查找资料很多说@Id,@Column属性必须配置到getXXX方法上,但是亲测放在属性上面也可以。。
注意——-
导包不能导入hibernate的包需要导入javax.persistence中的包:
import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;
- Spring4和Hibernate4整合小结
- spring4和hibernate4.0.0的整合
- 整合Struts2、Hibernate4.3和Spring4.2
- Spring4和Hibernate4整合后事务不起作用
- Struts2+Hibernate4+Spring4整合
- spring4如何整合hibernate4
- Spring4+Hibernate4整合
- spring4整合hibernate4
- spring4 hibernate4(5) 整合
- spring4, hibernate4 整合问题
- Spring4 整合 Hibernate4
- strut2+hibernate4+spring4整合
- Spring4+Hibernate4整合问题解决
- spring4+hibernate4+struts2整合
- Spring4 整合Hibernate4,Struts2
- Spring4整合Hibernate4.3
- Spring4+Hibernate4整合配置
- hibernate4与spring4整合时,映射文件和注解
- CF689E:Mike and Geometry Problem(组合数)
- 命令模式(Command Pattern)。
- 树状数组关于区间修改区间求和的问题
- [Usaco2008 Open] Clear And Present Danger 寻宝之路
- 阿里面试(二)
- Spring4和Hibernate4整合小结
- 索引
- linux 常用目录
- 更改Arcgis10.2布局视图标题
- USB驱动----USB总线驱动程序
- 指向常量的指针、常量指针傻傻分不清楚
- BEGAN: Boundary Equilibrium Generative Adversarial Networks阅读笔记
- C++面向对象(2)
- 大数据企业架构以及产生的相关热门职位