• 售前

  • 售后

热门帖子
入门百科

Spring集成Hibernate 3

[复制链接]
乱放大的宙斯宙t 显示全部楼层 发表于 2022-1-15 13:06:52 |阅读模式 打印 上一主题 下一主题
一、集成的注意事项

        SessionFactory的创建交由IOC容器来管理,通过Configuration对象创建。
     Hibernate事务交给spring的声明式事务管理。
    现可以通过spring配置,依赖IOC容器,DI注入来实现。

  两种方式:
方式1  Spring直接加载hibernate.cfg.xml文件的方式整合
方式2  连接池交给spring管理  【一部分配置写到hibernate中(hibernate常用配置),一部分在spring中完成(sessionFactory注入,dataSource连接池)】
二、具体步骤

1、导入所需要的hibernate、Spring的jar包

核心:
spring-orm-3.2.18.RELEASE.jar 【spring对hibernate的支持】
spring-tx-3.2.18.RELEASE.jar 【事务相关】

 数据库连接所需要的包:
 
 2、实体类Student
  
  1. package entity;
  2. public class Student {
  3.     private int id;
  4.     private String name;
  5.     public int getId() {
  6.         return id;
  7.     }
  8.     public void setId(int id) {
  9.         this.id = id;
  10.     }
  11.     public String getName() {
  12.         return name;
  13.     }
  14.     public void setName(String name) {
  15.         this.name = name;
  16.     }
  17.     @Override
  18.     public String toString() {
  19.         return "user [id=" + id + ", name=" + name + "]";
  20.     }
  21. }
复制代码
student.hbm.xml
  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4.         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping package="entity">
  6.     <class name="entity.Student" table="user">
  7.         <id name="id" column="id">
  8.             <generator class="native">
  9.             </generator>
  10.         </id>
  11.         <property name="name" column="name"></property>
  12.     </class>
  13. </hibernate-mapping>
复制代码
3、配置文件 
方式一: Spring直接加载hibernate.cfg.xml文件的方式整合
Application.xml配置文件
  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.        xsi:schemaLocation="http://www.springframework.org/schema/beans
  5.                         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
  6.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  7.         <property name="configLocation" value="hibernate.cfg.xml"></property>
  8.     </bean>
  9. </beans>
复制代码
hibernate.cfg.xml
  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.        xsi:schemaLocation="http://www.springframework.org/schema/beans
  5.                         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
  6.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  7.         <property name="configLocation" value="hibernate.cfg.xml"></property>
  8.     </bean>
  9. </beans>    jdbc:mysql://localhost:3306/mybase?serverTimezone=UTC&useSSL=false        com.mysql.cj.jdbc.Driver        root        123456<?xml version="1.0" encoding="UTF-8"?>
  10. <beans xmlns="http://www.springframework.org/schema/beans"
  11.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  12.        xsi:schemaLocation="http://www.springframework.org/schema/beans
  13.                         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
  14.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  15.         <property name="configLocation" value="hibernate.cfg.xml"></property>
  16.     </bean>
  17. </beans>org.hibernate.dialect.MySQLDialect<?xml version="1.0" encoding="UTF-8"?>
  18. <beans xmlns="http://www.springframework.org/schema/beans"
  19.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  20.        xsi:schemaLocation="http://www.springframework.org/schema/beans
  21.                         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
  22.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  23.         <property name="configLocation" value="hibernate.cfg.xml"></property>
  24.     </bean>
  25. </beans>true<?xml version="1.0" encoding="UTF-8"?>
  26. <beans xmlns="http://www.springframework.org/schema/beans"
  27.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  28.        xsi:schemaLocation="http://www.springframework.org/schema/beans
  29.                         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
  30.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  31.         <property name="configLocation" value="hibernate.cfg.xml"></property>
  32.     </bean>
  33. </beans>true        update<?xml version="1.0" encoding="UTF-8"?>
  34. <beans xmlns="http://www.springframework.org/schema/beans"
  35.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  36.        xsi:schemaLocation="http://www.springframework.org/schema/beans
  37.                         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
  38.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  39.         <property name="configLocation" value="hibernate.cfg.xml"></property>
  40.     </bean>
  41. </beans>   
复制代码
方式2 : 连接池交给spring管理  【一部分配置写到hibernate中(hibernate常用配置),一部分在spring中完成(sessionFactory注入,dataSource连接池)】
Application.xml配置文件
  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4.         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping package="entity">
  6.     <class name="entity.Student" table="user">
  7.         <id name="id" column="id">
  8.             <generator class="native">
  9.             </generator>
  10.         </id>
  11.         <property name="name" column="name"></property>
  12.     </class>
  13. </hibernate-mapping><?xml version="1.0" encoding="UTF-8"?>
  14. <!DOCTYPE hibernate-mapping PUBLIC
  15.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  16.         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  17. <hibernate-mapping package="entity">
  18.     <class name="entity.Student" table="user">
  19.         <id name="id" column="id">
  20.             <generator class="native">
  21.             </generator>
  22.         </id>
  23.         <property name="name" column="name"></property>
  24.     </class>
  25. </hibernate-mapping>entity/student.hbm.xml<?xml version="1.0" encoding="UTF-8"?>
  26. <!DOCTYPE hibernate-mapping PUBLIC
  27.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  28.         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  29. <hibernate-mapping package="entity">
  30.     <class name="entity.Student" table="user">
  31.         <id name="id" column="id">
  32.             <generator class="native">
  33.             </generator>
  34.         </id>
  35.         <property name="name" column="name"></property>
  36.     </class>
  37. </hibernate-mapping>        org.hibernate.dialect.MySQLDialect<?xml version="1.0" encoding="UTF-8"?>
  38. <beans xmlns="http://www.springframework.org/schema/beans"
  39.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  40.        xsi:schemaLocation="http://www.springframework.org/schema/beans
  41.                         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
  42.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  43.         <property name="configLocation" value="hibernate.cfg.xml"></property>
  44.     </bean>
  45. </beans>        
复制代码
4.StudentDao类

  
  1. public interface schoolDao {
  2.     /*按学号查询学生*/
  3.     public Student findStudent(int id);
  4.     /*按学号删除学生*/
  5.     public void deleteStudent(int id);
  6. }
复制代码
 5、schoolDaoImpl 
  
  1. public class schoolDaoImpl implements schoolDao {
  2.     private static Session session = null;
  3.     private Student student = new Student();
  4.     /*获取对应的的session*/
  5.     public Session getSession() {
  6.         ApplicationContext ac = new ClassPathXmlApplicationContext("ApplicationContext.xml");
  7.         SessionFactory sf = (SessionFactory) ac.getBean("sessionFactory");
  8.         if (session == null) {
  9.             session = sf.openSession();
  10.         }
  11.         return session;
  12.     }
  13.     @Override
  14.     public Student findStudent(int id) {
  15.         Transaction ts = getSession().beginTransaction();
  16.         student = (Student) getSession().get(Student.class, id);
  17.         /*System.out.println(u);
  18.         System.out.println("success!!!");*/
  19.         ts.commit();
  20.         getSession().close();
  21.         return student;
  22.     }
  23.     @Override
  24.     public void deleteStudent(int id) {
  25.         Transaction ts = getSession().beginTransaction();
  26.         getSession().delete((Student) getSession().get(Student.class, id));
  27.         ts.commit();
  28.         getSession().close();
  29.     }
  30. }
复制代码
6、编写test测试类
  
  1. public class test {
  2.     public static void main(String[] args) {
  3.         schoolDao schooldao=new schoolDaoImpl();
  4.         System.out.println(schooldao.findStudent(1));
  5.     }
  6. }
复制代码
三、出错解决
1、Error creating bean with name 'sessionFactory' defined in class path resource
出现这个问题是sessionFactory创建失败,首先排查可能是使用的hibernate文件中实体映射错误,注意hbm.xml和xml中的映射是否一致(注意区分大小写),使用注解@Column(name="xx")中对应的数据表的字段,同样注意大小写。
看到所报错误的最后面
如果是maven项目,有可能配置文件没有编译到classes里面、检查有没有其他遗漏的配置文件。
2、.jar版本问题
如果遇到版本问题,更换版本重新尝试。

感谢阅读完!!!如果文章对你有用,就点点赞吧!!

来源:https://blog.caogenba.net/m0_46013789/article/details/122471353
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作