Eclipse整合Hibernate

注:由于以前自己在学校学习的框架的是Mybatis,由于Mybatis有对数据库的限制,所以现在进公司后,需要重新学习Hibernate,记录一下,一起学习。


一:环境搭建

1.所需jar包:

Hibernate-core-5.1.0.Final.jar dom4j-1.6.1.jarlog4j-core-2.5.jarjavassist-3.20.0-GA.jar

mysql-connector-java-5.1.34.jarantlr-2.7.7.jarcommons-logging-1.2.jarcglib-2.2.2.jar

commons-collections-3.2.1.jarjavax.transaction-1.1.jar

2.如果使用maven管理jar包,下面是使用maven的依赖,不使用maven就手动导入jar包:

   
        
            junit
            junit
            3.8.1
            test
        
        
            org.hibernate
            hibernate-core
            5.1.0.Final
        
        
            log4j
            log4j
            1.2.17
        
        
            dom4j
            dom4j
            1.6.1
        
        
            org.apache.logging.log4j
            log4j-core
            2.5
        
        
            org.apache.logging.log4j
            log4j-api
            2.5
        
        
            org.javassist
            javassist
            3.20.0-GA
        
        
            mysql
            mysql-connector-java
            5.1.34
        
        
            antlr
            antlr
            2.7.7
        
        
            commons-logging
            commons-logging
            1.2
        
        
            cglib
            cglib
            2.2.2
        
        
            commons-collections
            commons-collections
            3.2.1
        
        
            javax.transaction
            jta
            1.1
        
    
3.我使用的是MySQL,创建表StudentClass,下面是创建sql语句:

create table class(
    id int primary key auto_increment,
    classname varchar(50)
);
create table student(
    id int primary key auto_increment,
    studentname varchar(50),
    classid int
);

alter table student add constraint fk_classid foreign key(classid) references  class(id);

insert into student values(1,'完全',1);
insert into student values(2,'玩去',1);
insert into class values(1,'三年二班');

4.创建相对应的实体类Class.javaStudent.java

Class.java如下: 属性和数据库中的列对应,类实现序列化接口,自动生成序列化ID,右键source生成Get/Set方法和toString方法


 

Student.java如下:这个类中也和数据库中的列对应,这里用对象对应数据库中的classid属性

 Eclipse整合Hibernate_第1张图片

5.创建实体类的映射文件Class.hbm.xmlStudent.hbm.xmlhibernate.cfg.xml,并将三个资源文件放在src/main/resources包下面

,这样不用指定绝对路径,可以自动加载resources下面的配置文件。

Eclipse整合Hibernate_第2张图片

 

hibernate.cfg.xml配置如下:



        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

   
        

        true
        
           com.mysql.jdbc.Driver
           
        a
       
        jdbc:mysql://localhost:3306/hibernate
       
        root
       
        org.hibernate.dialect.MySQLDialect
       
        true
       
        true
        
        
        
   

 

这里是实体的映射文件路径,因为student的映射文件需要使用class对象,所以需要将Class的映射放前面,需要先加载

Class.hbm.xml配置如下:



"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

   
       
           
           
       
       
           
       
   

Student.hbm.xml配置如下:



"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

   
       
           
           
       
       
           
       
       
            
       
   



这里圈出来的就是配置的对象映射,有多对一,多对多等映射。


6.写一个获取SessionFactory的工具类,代码如下:

package com.yk.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
    private static final SessionFactory sessionFactory = buildSessionFactory();
    private static SessionFactory buildSessionFactory() {
        try {
            return new Configuration().configure().buildSessionFactory();
        } catch (HibernateException e) {
            throw new ExceptionInInitializerError(e);
        }
    }
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
    public static void shutdown() {
        getSessionFactory().close();
    }
}

7.写一个主方法或者使用测试类,测试Hibernate是否成功映射,看控制台输出,测试代码如下:

package com.yk.Hibernate;
import org.hibernate.Session;
import com.yk.model.Student;
import junit.framework.TestCase;
public class HibernateTest extends TestCase {
        private static Session session =null;
        public static void main(String[] args) {
            //从连接工厂获取连接
            session = HibernateUtil.getSessionFactory().openSession();
            //开启事务
            session.beginTransaction();
            //这里可以看出Hibernate使用的是jndi机制
            Student stu = session.get(Student.class, 1);
            System.out.println("学生ID:"+stu.getId()+"\n"+"学生姓名:"+stu.getStudentname()+"\n"+"班级信息:"+stu.getClas());
            session.disconnect();
        }
}
控制台输出结果:

Eclipse整合Hibernate_第3张图片

 

结果可以看出,将数据库中的多对一关系映查询出来,输出信息正确,班级信息是以对象的形式输出。

 


你可能感兴趣的:(hibernate,mybatis,maven,数据库,eclipse,个人学习记录)