征服数据库 --- 集合hibernate

征服数据库 --- 集合hibernate 1.首先要搭建环境,先倒入包 导入hibernate的包,为: hibernate-distribution-3.6.8.Final\lib\required下是所有jar包 hibernate-distribution-3.6.8.Final\lib\jpa包下的jar包 hibernate-distribution-3.6.8.Final下的hibernate3.jar 导入spring的包为: spring-framework-2.5.5\lib\jakarta-commons \comons-dbcp.jar spring-framework-2.5.5\lib\jakarta-commons \commons-pool.jar spring-framework-2.5.5\lib\jakarta-commons\ commons-logging.jar spring-framework-2.5.5\dist\ spring.jar 导入mysql驱动 mysql-connector-java-5.1.16-bin.jar 要用到切面编程,所以要导入包为: spring-framework-2.5.5\lib\cglib\cglib-nodep-2.1_3.jar spring-framework-2.5.5\lib\aspectj下的所有jar包(2个jar包) 一共要导入16个包就可以了。 2.配置src下的bean.xml文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> </beans> 通过beanxml读取properties文件中的信息,并显示 propertis文件的内容为: driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/spring username=root password=1234 在bean.xml中读取文件 <!-- 配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>${driverClassName}</value> </property> <property name="url"> <value>${url}</value> </property> <property name="username"> <value>${username}</value> </property> <property name="password"> <value>${password}</value> </property> </bean> <!-- 读取外部的文件 --> <context:property-placeholder location="jdbc.properties" /> 这样就读取了properties中的文件,因为要集合hibernate,所以需要hibernate.cfg.xml,但是spring中已经封装好了hibernate.cfg.xml中需要配置的信息。我们使用hibernate集合的框架配置sessionFactory工厂,代码为: <!-- 使用hibernate集合的框架 配置sessionFactory工厂 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!-- 注入数据源 --> <property name="dataSource" ref="dataSource"></property> <!-- hibernate映射文件的引入 --> <property name="mappingResources"> <list> <value>cn/csdn/hr/domain/Admin.hbm.xml</value> </list> </property> <!-- 配置hibernate属性的设置 --> <property name="hibernateProperties"> <props> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean> 声明完框架之后要使用hibernate模板类 <!-- hibernate模板类 --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <!-- 注入sessionFactory工厂 --> <property name="sessionFactory" ref="sessionFactory" /> </bean> 我们先配置好sessionFactory, 3.然后我们需要domain层,dao层,service层,我们以Admin为例,属性有id和name,我们在cn.csdn.hr.domain.Admin.java类为: package cn.csdn.hr.domain; import java.io.Serializable; public class Admin implements Serializable { private static final long serialVersionUID = 1L; private Integer id; private String name; public Admin() { super(); // TODO Auto-generated constructor stub } public Admin(Integer id, String name) { super(); this.id = id; this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Admin [id=" + id + ", name=" + name + "]"; } } 在ccn.csdn.hr.domain.Admin.hbm.xml中的配置为: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.csdn.hr.domain"> <class name="Admin" table="admin"> <id name="id" column="id"> <generator class="native"></generator> </id> <property name="name" column="name"></property> </class> </hibernate-mapping> 4.创建dao层,在cn.csdn.hr.dao层下 AdminDao.java 接口 package cn.csdn.hr.hibernate.dao; import java.util.List; import cn.csdn.hr.domain.Admin; public interface AdminDao { // 查询所有 public List<Admin> findAll(); public void delete(Admin entity); public void update(Admin entity); public Admin findById(Integer id); public Admin findByName(final String name); public void insert(Admin entity); } AdminDaoImpl.java 实现类 package cn.csdn.hr.hibernate.dao; import java.sql.SQLException; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Session; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import cn.csdn.hr.domain.Admin; @SuppressWarnings("unchecked") public class AdminDaoImpl extends HibernateDaoSupport implements AdminDao { //在HibernateDaoSupport中封装了HibernateTemplate类,所以直接继承 @Override public List<Admin> findAll() { // TODO Auto-generated method stub List<Admin> admins = this.getHibernateTemplate().find("from Admin"); return admins; } @Override public void delete(Admin entity) { // TODO Auto-generated method stub this.getHibernateTemplate().delete(entity); } @Override public void update(Admin entity) { // TODO Auto-generated method stub this.getHibernateTemplate().update(entity); } @Override public Admin findById(Integer id) { return (Admin) this.getHibernateTemplate().get(Admin.class, id); } @Override public Admin findByName(final String name) { // TODO Auto-generated method stub //暴露session return (Admin) this.getHibernateTemplate().execute(new HibernateCallback() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { // TODO Auto-generated method stub Object obj = session.createQuery("from Admin where name=:name") .setString("name", name).uniqueResult(); return obj; } }); } @Override public void insert(Admin entity) { // TODO Auto-generated method stub this.getHibernateTemplate().save(entity); } } 5.创建cn.csdn.hr.service层 AdminService.java 接口 package cn.csdn.hr.hibernate.service; import cn.csdn.hr.hibernate.dao.AdminDao; public interface AdminService extends AdminDao{ } AdminServiceImpl.java 实现类 package cn.csdn.hr.hibernate.service; import java.util.List; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.TransactionCallback; import org.springframework.transaction.support.TransactionTemplate; import cn.csdn.hr.domain.Admin; import cn.csdn.hr.hibernate.dao.AdminDao; public class AdminServiceImpl implements AdminService { // 声明dao对象 private AdminDao adminDao; // 声明事务管理对象 private TransactionTemplate transactionTemplate; // 注入adminDao public void setAdminDao(AdminDao adminDao) { this.adminDao = adminDao; } // 注入事务的管理对象 public void setTransactionTemplate(TransactionTemplate transactionTemplate) { this.transactionTemplate = transactionTemplate; } @Override public List<Admin> findAll() { // TODO Auto-generated method stub return adminDao.findAll(); } @Override public void delete(final Admin entity) { // TODO Auto-generated method stub adminDao.delete(entity); } @Override public void update(Admin entity) { // TODO Auto-generated method stub adminDao.update(entity); } @Override public Admin findById(Integer id) { // TODO Auto-generated method stub return adminDao.findById(id); } @Override public Admin findByName(String name) { // TODO Auto-generated method stub return adminDao.findByName(name); } @Override public void insert(Admin entity) { // TODO Auto-generated method stub adminDao.insert(entity); } } 这样,我们配置好了所有的层的关系,并且实现了方法,下面我们需要在bean.xml中配置service层的bean <!-- 配置业务bean对象 --> <bean id="adminServiceImpl" class="cn.csdn.hr.hibernate.service.AdminServiceImpl"> <!-- 注入dao对象 --> <property name="adminDao" ref="adminDaoImpl"></property> </bean> 这样,hibernate集合就已经搭建成了,我们需要在junit中测试就ok了, package cn.csdn.hr.junit; import java.util.List; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.csdn.hr.domain.Admin; import cn.csdn.hr.hibernate.service.AdminService; public class AppMain { @Test public void test() { ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); AdminService adminService = (AdminService) ac.getBean("adminServiceImpl"); List<Admin> admins = adminService.findAll(); for (Admin admin : admins) { System.out.println(admin.toString()); } } } 在这里只测试查询所有的方法,其他的方法都测试过了,么有问题。 从上面的代码中我们可以看出spring中的hibernate实现就是在bean.xml中配置。配置好了就可以用了,只要配置的有sessionFactory工厂,和hibernate的模板类,再把hibernate模板类引入到指定的serviceImpl中就可以了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值