配置Hibernate
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<!-- 开启Spring IOC的注解扫描 -->
<context:component-scan base-package="com.smart"/>
<!-- 指定property文件位置 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置DBCP数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.url}"
p:username="${jdbc.username}"
p:password="${jdbc.password}"
/>
<!-- 配置Hibernate的SeesionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" >
<!-- 指定引用的数据源 -->
<property name="dataSource" ref="dataSource"/>
<!-- 自动扫描指定包下的实体类, 减少映射配置文件的书写 -->
<property name="packagesToScan" value="com.smart.domain" />
<!-- 配置Hibernate的控制属性 -->
<property name="hibernateProperties">
<props>
<!-- 指明实际数据库类型 -->
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<!-- 显示当前执行的sql语句 -->
<prop key="hibernate.show_sql">
true
</prop>
</props>
</property>
</bean>
<!-- 配置HiberanteTemplate对象 -->
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate5.HibernateTemplate"
p:sessionFactory-ref="sessionFactory"/>
<!-- 配置Hibernate的事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate5.HibernateTransactionManager"
p:sessionFactory-ref="sessionFactory"/>
<!-- 配置开启注解事务处理 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
使用注解配置实体类(域对象和数据库表的映射关系)
/***
* hibernate对实体类的要求
* (1)属性必须是private 且有public的get和set方法
* (2)必须有唯一标识属性来表示实体类
* (3)属性的类型建议用包装类型
* hibernate实体类有三种状态:
* (1)瞬时态:没有id,与session没有关系
* (2)持久态:有id,与session有关系
* (3)托管太:有id,和session无关
*/
package com.smart.domain;
// @Entity注解类必须含有默认构造函数
@Entity
@Table (name = "user")
public class User {
/**
* id作为主键,主键有很多生成策略
* (1)native自增长:根据选择的数据库自动选择主键的生成方式
* (2)uuid:字段用String类型
* (3)identity 需要数据库支持自增长,mysql支持,oracle不支持
*/
@Id
@GeneratedValue
@Column (name = "id")
private int id;
@Column (name = "name", nullable = false, length = 100)
private String name;
@Column (name = "age", nullable = false)
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
参考
spring中集成hibernate
Spring整合Hibernate