配置hibernate
一、导入实体类&orm元数据
二、主配置文件
hibernate.cfg.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 数据库驱动 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 数据库url --> <property name="hibernate.connection.url">jdbc:mysql:///crm</property> <!-- 数据库连接用户名 --> <property name="hibernate.connection.username">root</property> <!-- 数据库连接密码 --> <property name="hibernate.connection.password">root</property> <!-- 数据库方言 注意: MYSQL在选择方言时,请选择最短的方言. --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 将hibernate生成的sql语句打印到控制台 --> <property name="hibernate.show_sql">true</property> <!-- 将hibernate生成的sql语句格式化(语法缩进) --> <property name="hibernate.format_sql">true</property> <!-- 自动导出表结构. 自动建表 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 引入实体配置文件 --> <mapping resource="cn/shop/domain/Customer.hbm.xml" /> <mapping resource="cn/shop/domain/LinkMan.hbm.xml" /> <mapping resource="cn/shop/domain/User.hbm.xml" /> </session-factory> </hibernate-configuration>
spring整合hibernate
一、整合原理
整合原理:将sessionFactory对象交给spring容器管理
二、在spring中配置sessionFactory
配置方案一:
<!-- 将SessionFactory配置到spring容器中 --> <!-- 加载配置方案1:仍然使用外部的hibernate.cfg.xml配置信息 --> <bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" > <property name="configLocation" value="classpath:hibernate.cfg.xml" ></property> </bean> -->
配置方案二:
<!-- 加载配置方案2:在spring配置中放置hibernate配置信息 --> <bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" > <!-- 将连接池注入到sessionFactory, hibernate会通过连接池获得连接 --> <property name="dataSource" ref="dataSource" ></property> <!-- 配置hibernate基本信息 --> <property name="hibernateProperties"> <props> <!-- 必选配置 --> <prop key="hibernate.connection.driver_class" >com.mysql.jdbc.Driver</prop> <prop key="hibernate.connection.url" >jdbc:mysql:///crm</prop> <prop key="hibernate.connection.username" >root</prop> <prop key="hibernate.connection.password" >root</prop> --> <prop key="hibernate.dialect" >org.hibernate.dialect.MySQLDialect</prop> <!-- 可选配置 --> <prop key="hibernate.show_sql" >true</prop> <prop key="hibernate.format_sql" >true</prop> <prop key="hibernate.hbm2ddl.auto" >update</prop> </props> </property> <!-- 引入orm元数据,指定orm元数据所在的包路径,spring会自动读取包中的所有配置 --> <property name="mappingDirectoryLocations" value="classpath:cn/shop/domain" ></property> </bean>
spring整合c3p0连接池
一、配置db.properties
db.properties:
jdbc.jdbcUrl=jdbc:mysql:///crm jdbc.driverClass=com.mysql.jdbc.Driver jdbc.user=root jdbc.password=root
二、引入连接池到spring中
applicationContext.xm:
<!-- 读取db.properties文件 --> <context:property-placeholder location="classpath:db.properties" /> <!-- 配置c3p0连接池 --> <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" > <property name="jdbcUrl" value="${jdbc.jdbcUrl}" ></property> <property name="driverClass" value="${jdbc.driverClass}" ></property> <property name="user" value="${jdbc.user}" ></property> <property name="password" value="${jdbc.password}" ></property> </bean>
三、将连接池注入给SessionFactory
applicationContext.xm:
<bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" > <!-- 将连接池注入到sessionFactory, hibernate会通过连接池获得连接 --> <property name="dataSource" ref="dataSource" ></property> </bean>
使用c3p0之后,hibernate.cfg.xml文件可以不使用。
spring整合hibernate环境操作数据库
一、Dao类创建:继承HibernateDaoSupport
二、hibernate模板的操作
2.1 execute
//HibernateDaoSupport 为dao注入sessionFactory public class UserDaoImpl extends HibernateDaoSupport implements UserDao { @Override public User getByUserCode(final String usercode) { //HQL return getHibernateTemplate().execute(new HibernateCallback<User>() { @Override public User doInHibernate(Session session) throws HibernateException { String hql = "from User where user_code = ? "; Query query = session.createQuery(hql); query.setParameter(0, usercode); User user = (User) query.uniqueResult(); return user; } }); } @Override public void save(User u) { getHibernateTemplate().save(u); } }
2.2 findByCriteria
//HibernateDaoSupport 为dao注入sessionFactory public class UserDaoImpl extends HibernateDaoSupport implements UserDao { @Override public User getByUserCode(final String usercode) { //Criteria DetachedCriteria dc = DetachedCriteria.forClass(User.class); dc.add(Restrictions.eq("user_code", usercode)); List<User> list = (List<User>) getHibernateTemplate().findByCriteria(dc); if(list != null && list.size()>0){ return list.get(0); }else{ return null; } } @Override public void save(User u) { getHibernateTemplate().save(u); } }
三、spring中配置dao
applicationContext.xml:
<!-- dao --> <bean name="userDao" class="cn.shop.dao.impl.UserDaoImpl" > <!-- 注入sessionFactory --> <property name="sessionFactory" ref="sessionFactory" ></property> </bean>