• Hibernate的配置与简单使用


    一、概念

       Hibernate是一个开源的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以抛弃在程序中编写SQL语句,随心所欲的使用对象编程思维来操纵数据库。

    二、准备工作

      在Eclipse中安装HibernateTools插件:Help -> Install New Software 来进行安装。New -> Other打开的对话框中如果有Hibernate选项则表明安装成功。

    三、创建工程

      1.New 一个 Java Project

      2.为Java工程导入jar包:

      • Hibernate核心jar包
      • MySQL的jdbc驱动jar包
      • Junit4的jar包

         我们在windows->preferences->java->build path-user libraries中将三者添加为三个用户类库,方便以后的导入:

        右击Java项目->properties->Java Build Path->Library->add Library->User Library->next->将刚才建好的用户类库全打勾->finish->ok。

      3. 创建Hibernate的配置文档,并编辑:

        右击工程下的src->new->other->Hibernate->Hibernate Configuration File (cfg.xml)->next,next,finish

        src下已经生成了配置文件hibernate.cfg.xml,打开

    <hibernate-configuration>
        <session-factory name="">
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  //mysql的jdbc驱动
            <property name="connection.url">jdbc:mysql:///hibernate?useUnicode=true&amp;characterEncoding=UTF-8</property>  //指明数据库的url地址
            <property name="connection.username">root</property>  //mysql用户名
            <property name="connection.password">****</property>  //密码
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  //方言
    
            <property name="show_sql">true</property>
            <property name="format_sql">true</property>
            <property name="hbm2ddl.auto">create</property>
    
            <mapping resource="Students.hbm.xml" />  //映射文件
        </session-factory>
    </hibernate-configuration>

       4. 创建持久化类

        假如我们想往数据库存放一张学生表,包括id,姓名,性别,生日,地址这些字段。那么我们可以创建一个Students类,类中包含了学生的这些属性,我们可以通过“更改Students对象的属性,再传递给数据库”来间接地操纵数据库,这样就避免了使用SQL语句。那么Students这个类我们就称为持久化类。

        在src下创建一个类,命名为Students。持久化类的设计原则要遵循JavaBean的设计原则:

      • 公有的类
      • 私有的属性
      • 无参的公有的构造方法
      • 属性setter/getter封装

        如下:

        
    public class Students {
    
        private int sid;
        private String sname;
        private String gender;
        private Date brithday;
        private String address;
    
        public Students() {
    
        }
    
        public Students(int sid, String sname, String gender, Date brithday, String address) {
            this.sid = sid;
            this.sname = sname;
            this.gender = gender;
            this.brithday = brithday;
            this.address = address;
        }
    
        public int getSid() {
            return sid;
        }
    
        public void setSid(int sid) {
            this.sid = sid;
        }
    
        public String getSname() {
            return sname;
        }
    
        public void setSname(String sname) {
            this.sname = sname;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public Date getBrithday() {
            return brithday;
        }
    
        public void setBrithday(Date brithday) {
            this.brithday = brithday;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        @Override
        public String toString() {
            return "Students [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", brithday=" + brithday
                    + ", address=" + address + "]";
        }
    
    }
    Students Class

      5. 创建对象-关系映射文件

        右击src->new->other->Hibernate->Hibernater XML Mapping File (hbm.xml)->next,next->点选要持久化的类->finish

        对象-关系映射文件创建完毕,打开可以看到:文件将一个实体类映射称为数据库中的一张表。

        
    <hibernate-mapping>
        <class name="Students" table="STUDENTS">
            <id name="sid" type="int">
                <column name="SID" />
                <generator class="assigned" />
            </id>
            <property name="sname" type="java.lang.String">
                <column name="SNAME" />
            </property>
            <property name="gender" type="java.lang.String">
                <column name="GENDER" />
            </property>
            <property name="brithday" type="java.util.Date">
                <column name="BRITHDAY" />
            </property>
            <property name="address" type="java.lang.String">
                <column name="ADDRESS" />
            </property>
        </class>
    </hibernate-mapping>
    Students.hbm.xml

        映射文件创建好之后要记得在hibernate配置文件中,添加mapping标签:

        <mapping resource="Students.hbm.xml" />

      6. 在Mysql中创建一个数据库,名称为配置文档中所配置的数据库名称

      7. 通过Hibernate API编写访问数据库的代码,使用Junit进行测试。

        三个注解:

      • @Test :测试方法
      • @Before:初始化方法
      • @After:释放资源

        右击工程名->new->source folder源文件夹->folder name命名为test->finish

        在test文件夹下新建一个类,命名为StudentsTest:

     1 import java.util.Date;
     2 import org.hibernate.Session;
     3 import org.hibernate.SessionFactory;
     4 import org.hibernate.Transaction;
     5 import org.hibernate.cfg.Configuration;
     6 import org.hibernate.service.ServiceRegistry;
     7 import org.hibernate.service.ServiceRegistryBuilder;
     8 import org.junit.After;
     9 import org.junit.Before;
    10 import org.junit.Test;
    11 
    12 //测试类
    13 public class StudentsTest {
    14 
    15     private SessionFactory sessionFactory;
    16     private Session session;
    17     private Transaction transaction;
    18 
    19     @Before
    20     public void init() {
    21         // 创建配置对象
    22         Configuration config = new Configuration().configure();
    23         // 创建服务注册对象
    24         ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties())
    25                 .buildServiceRegistry();
    26         // 创建会话工厂对象
    27         sessionFactory = config.buildSessionFactory(serviceRegistry);
    28         // 会话对象
    29         session = sessionFactory.openSession();
    30         // 开启事务
    31         transaction = session.beginTransaction();
    32 
    33     }
    34 
    35     @After
    36     public void destroy() {
    37         transaction.commit();// 提交事务
    38         session.close();// 关闭会话
    39         sessionFactory.close();// 关闭会话工厂
    40     }
    41 
    42     @Test
    43     public void testSaveStudents() {
    44         // 生成学生对象
    45         Students s = new Students(1, "张三", "男", new Date(), "北京市");
    46         // 保存对象进入数据库
    47         session.save(s);
    48     }
    49 }

        测试类创建好之后,右击该类下目录下的testSaveStudents()方法,Run as Junit Test!

        之后我们去相应的数据库里查看,已经有一张students的表生成了:

        

     

     

     

  • 相关阅读:
    Linux常用命令1
    Linux常用命令
    java的接口和抽象类区别
    字符串的全排列
    字符串的全组合
    Mysql范式
    同步 异步 阻塞 非阻塞概念区分
    死锁产生的条件以及解决方法
    Mysql存储引擎MyIsAM和InnoDB区别
    SLES documentation
  • 原文地址:https://www.cnblogs.com/xingyazhao/p/6659124.html
Copyright © 2020-2023  润新知