0


Spring集成Hibernate 3

一、集成的注意事项

  1. **SessionFactory的创建交由IOC容器来管理,通过Configuration对象创建。
  2. Hibernate事务交给spring的声明式事务管理。
  3. 现可以通过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. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory>
  7. <!-- 数据库连接的参数配置 -->
  8. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mybase?serverTimezone=UTC&amp;useSSL=false</property>
  9. <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
  10. <property name="hibernate.connection.username">root</property>
  11. <property name="hibernate.connection.password">123456</property>
  12. <!-- 数据库方言-->
  13. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  14. <!-- 其他常用配置 -->
  15. <property name="hibernate.show_sql">true</property>
  16. <!-- 格式化输出sql语句-->
  17. <property name="hibernate.format_sql">true</property>
  18. <property name="hibernate.hbm2ddl.auto">update</property>
  19. <!--映射配置 -->
  20. <mapping resource="entity/student.hbm.xml"/>
  21. </session-factory>
  22. </hibernate-configuration>

**方式2 : **连接池交给spring管理 【一部分配置写到hibernate中(hibernate常用配置),一部分在spring中完成(sessionFactory注入,dataSource连接池)】

Application.xml配置文件

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://www.springframework.org/schema/beans
  4. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
  5. <!-- 实例化连接池 -->
  6. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  7. <property name="driverClass" value="com.mysql.cj.jdbc.Driver"></property>
  8. <property name="jdbcUrl"
  9. value="jdbc:mysql://localhost:3306/mybase?serverTimezone=UTC&amp;useSSL=false"></property>
  10. <property name="user" value="root"></property>
  11. <property name="password" value="123456"></property>
  12. </bean>
  13. <!--定义sessionFactory -->
  14. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  15. <!-- 注入数据库对象 -->
  16. <property name="dataSource" ref="dataSource"></property>
  17. <!-- 映射配置 -->
  18. <property name="mappingResources">
  19. <list>
  20. <value>entity/student.hbm.xml</value>
  21. </list>
  22. </property>
  23. <!-- 常用配置和数据库方言 -->
  24. <property name="hibernateProperties">
  25. <props>
  26. <prop key="dialect">org.hibernate.dialect.MySQLDialect</prop>
  27. </props>
  28. </property>
  29. </bean>
  30. </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版本问题

如果遇到版本问题,更换版本重新尝试。


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

标签: spring hibernate java

本文转载自: https://blog.csdn.net/m0_46013789/article/details/122471353
版权归原作者 雨中等枫来 所有, 如有侵权,请联系我们删除。

“Spring集成Hibernate 3”的评论:

还没有评论