zoukankan      html  css  js  c++  java
  • Hibernate之HelloWorld

    1. 步骤

    0. 导入相关Jar包。

    1. 编写Hibernate的持久化文件 (默认为hibernate.cfg.xml)。

    2. 编写持久化类。

    3. 创建对象 - 关系文件(.htm.xml文件)。

    4. 通过hibernate的API 编写访问数据库的代码。

    2. 具体代码实现

    1. 创建hibernate的配置文件 - hibernate.cfg.xml文件

    1)项目-右键-new-other-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://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
     5 <hibernate-configuration>
     6     <session-factory>
     7         <!-- 配置连接数据库的基本信息 -->
     8         <!-- 数据库的用户名 密码 驱动 URL -->
     9         <property name="connection.username">root</property>
    10         <property name="connection.password">960105</property>
    11         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    12         <property name="connection.url">jdbc:mysql:///hibernate</property>
    13         <!-- 配置hibernate的基本方法 -->
    14         <!-- hibernate所使用的数据库方言 -->
    15         <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>        
    16         
    17         <!-- 执行操作时是否在控制台打印 SQL -->
    18         <property name="show_sql">true</property>
    19     
    20         <!-- 是否对 SQL 进行格式化 -->
    21         <property name="format_sql">true</property>
    22     
    23         <!-- 指定自动生成数据表的策略 -->
    24         <property name="hbm2ddl.auto">update</property>
    25         
    26         <!-- 指定关联的hbm.xml文件 -->
    27         <mapping resource="com/tk/hibernate/News.hbm.xml"/>
    28     </session-factory>
    29 </hibernate-configuration>

    2.编写持久化类

    1. 必须提供一个无参数的构造器(反射)。

    2. 提供一个唯一的标识属性(主键)。

    3. 为类的持久化字段提供访问方法(即get/set)。

    4. 重写equal和hashCode方法(非必须)。

     1 package com.tk.hibernate;
     2 
     3 import java.sql.Date;
     4 
     5 public class News {
     6     private Integer id; //field
     7     private String title;
     8     private String author;
     9     private Date date;
    10     public Integer getId() {
    11         return id;
    12     }
    13     public void setId(Integer id) {
    14         this.id = id;
    15     }
    16     public String getTitle() {
    17         return title;
    18     }
    19     public void setTitle(String title) {
    20         this.title = title;
    21     }
    22     public String getAuthor() {
    23         return author;
    24     }
    25     public void setAuthor(String author) {
    26         this.author = author;
    27     }
    28     public Date getDate() {
    29         return date;
    30     }
    31     public void setDate(Date date) {
    32         this.date = date;
    33     }
    34     public News(String title, String author, Date date) {
    35         super();
    36         this.title = title;
    37         this.author = author;
    38         this.date = date;
    39     }
    40     public News() {
    41         // TODO Auto-generated constructor stub
    42     }
    43 }

    3. 创建关系 - 对象映射文件 - 项目-右键-new-other-hibernate下-hbm.xml

    注:主键的生成方式暂为native,采用数据库本地生成的方式。

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     4 <!-- Generated 2017-4-18 20:03:06 by Hibernate Tools 3.5.0.Final -->
     5 <hibernate-mapping>
     6     <class name="com.tk.hibernate.News" table="NEWS">
     7         <!--name 类里面的名字  -->
     8         <id name="id" type="java.lang.Integer">
     9             <!--column 对应数据表中的列名  -->
    10             <column name="ID" />
    11             <!-- 指定主键的生成方式 ,native使用数据库本地的生成方式-->
    12             <generator class="native" />
    13         </id>
    14         <property name="title" type="java.lang.String">
    15             <column name="TITLE" />
    16         </property>
    17         <property name="author" type="java.lang.String">
    18             <column name="AUTHOR" />
    19         </property>
    20         <property name="date" type="java.sql.Date">
    21             <column name="DATE" />
    22         </property>
    23     </class>
    24 </hibernate-mapping>

    4.创建测试类(Junit)

    具体步骤-在代码部分

     1 package com.tk.hibernate;
     2 
     3 import static org.junit.Assert.*;
     4 
     5 import java.sql.Date;
     6 
     7 import org.hibernate.Session;
     8 import org.hibernate.SessionFactory;
     9 import org.hibernate.Transaction;
    10 import org.hibernate.cfg.Configuration;
    11 import org.hibernate.service.ServiceRegistry;
    12 import org.hibernate.service.ServiceRegistryBuilder;
    13 import org.junit.Test;
    14 
    15 public class HibernateTest {
    16 @Test
    17     public void test() {
    18         //1. 创建sessionFactory 对象
    19         SessionFactory sessionFactory=null;
    20         //1) 创建一个configuration 对象:对应hibernate的基本配置信息和对象关系映射信息
    21         Configuration configuration=new Configuration().configure();
    23         //4.0 之前这样创建
    25       //sessionFactory = configuration.buildSessionFactory();
    26         //2). 创建一个 ServiceRegistry 对象: hibernate 4.x 新添加的对象
    28           //hibernate 的任何配置和服务都需要在该对象中注册后才能有效.
    29         ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties())
    30                                                     .buildServiceRegistry();
    31         sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    33         //2. 创建一个 Session 对象
    35         Session session = sessionFactory.openSession();
    36         //3. 开启事务
    38         Transaction transaction = session.beginTransaction();
    39         //4. 执行保存操作
    41         News news = new News("Java12345", "ATGUIGU", new Date(new java.util.Date().getTime()));
    42         session.save(news);
    43         //5. 提交事务 
    45         transaction.commit();
    46         //6. 关闭 Session
    48         session.close();
    49         //7. 关闭 SessionFactory 对象
    51         sessionFactory.close();        
    52         
    53     }
    54 
    55 }

     

  • 相关阅读:
    #333 Div2 Problem B Approximating a Constant Range(尺取法)
    苦逼的单身狗(玄乎的尺取大法)
    欧拉项目第四题之三位数之积数的最大回数
    欧拉项目第三题之最大质数因子
    关于尺取法的认识与简单例题
    codeforces 980B Marlin
    康托展开和逆康托展开
    Chrome控制台中Network的Preview与Response区别
    配置Express中间件
    Express中间件简介
  • 原文地址:https://www.cnblogs.com/quinntian/p/6746906.html
Copyright © 2011-2022 走看看