Spring MVC+Hiberante环境搭建
文章目录
最近学习了Hibernate,并将Hibernate集成到Spring MVC之中,并替换原有的JDBC,遇到了很多问题,在此记录一下。
添加相应的架包
我的项目是采用Gradle进行管理的,具体架包主要应包括:
- org.springframework:spring-orm:4.0.6.RELEASE #主要包含LocalSessionFactoryBean,用于产生sessionFactory
- org.springframework:spring-test:4.0.0.RELEASE #主要在测试中能配置ContextConfiguration的入口文件
- org.hibernate:hibernate-core:4.3.6.Final #主要包含了Hibernate核心类库
- org.hibernate:hibernate-annotations:3.5.6-Final #主要包含了Hibernate注解类库
- org.hibernate:hibernate-c3p0:4.3.6.Final #主要包含数据库连接池的类库
- org.slf4j:slf4j-api:1.7.5 #主要打印输出日志服务,我当时以为没用,没添加它,就一直报slf4j的架包错误
配置Hibernate相关的XML配置文件
配置database.properties
这里主要配置数据库连接池的参数,其中数据库我配有两个,一个用于开发,一个用于测试的。具体配置如下:
|
|
其中hibernate.hbm2ddl.auto=update配置,如果代码Object属性,类型和长度等有更新,执行过程中,数据库会对应自动更新,这样就不用再去更改对应数据表了。
配置Hibernate-config.xml
主要配置dataSource、sessionFactory、txManager,还有自动扫描、注解配置等。
|
|
其中注意
<context:component-scan base-package="com.thoughtworks.bookshelf"/> <context:annotation-config/>
不可缺少,这个是扫描注解的。<property name="packagesToScan"></property>
中间应是包名,我当时写成了com.thoughtworks.bookshelf.model.*
就报找不到对应实体的错误。- 该配置文件,对于Web app应该是在配置Spring MVC的配置文件中导入,否则会找不到Bean,无法加载sessionFactory,dataSource等,具体如
<import resource="hibernate-config.xml"></import>
,等类似的代码; 如果是Junit测试,应该在测试文件上头配置@ContextConfiguration(locations = {"classpath:hibernate-test.xml"})
, 具体参见第五部分。因此最好这个配置文件一式两份,一个配置的是开发的数据库,和Spring MVC配置文件在一起,另一个配置测试数据库,放在Source目录下。
修改实体类
这里主要有@Entity @Table @Id @GeneratedValue @Column等注解。其中Obeject上的注解@Table是与数据库中的某表对应的,默认名字相同,如果不同则要在注明,如@Table(name = "book")
; 属性上的注解@Column是于表中的字段对应,同理,如果名字不同则要@Column(name = "title", length = 200)
; @Id是指主键; @GeneratedValue是指该字段自动增长。
部分代码如下:
|
|
修改Dao文件
部分代码如下:
|
|
修改Dao的测试文件
Junit测试需要配置Hibernate配置文件入口
|
|
与原生JDBC比较
这里还没有涉及到复杂的表之间的关联,和自己写HQL语句,只是Hibernate入门和基本配置。
目前最直观的体现如下:
- Hibernate封装了基本的CRUD的方法,开发效率大大提高。
- Hibernate提供数据库事务管理,因此我们不必对手动关闭和释放数据库连接资源。