博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate 02之helloworld
阅读量:6516 次
发布时间:2019-06-24

本文共 4973 字,大约阅读时间需要 16 分钟。

1、安装插件

安装方法说明(hibernatetools-4.1.1.Final):Help --> Install New Software...Click Add... In dialog Add Site dialog, click Archive... Navigate to hibernatetools-Update-4.1.1.Final_2013-12-08_01-06-33-B605.zip  and click  Open Clicking OK in the Add Site dialog will bring you back to the dialog 'Install' Select the Jboss Tools hibernatetools Nightly Build Update Site that has appeared Click Next  and then Finish Approve the license Restart eclipse when that is asked

2、导入 Hibernate 必须的 jar 包:

加入数据库驱动的 jar 包:

3、Hibernate开发步骤

代码结构如下:

 

1、创建 Hibernate 配置文如下:hibernate.cfg.xml

root
123456
com.mysql.jdbc.Driver
jdbc:mysql:///hibernate5
org.hibernate.dialect.MySQLDialect
true
true
update

 

2、创建持久化 Java 类

注意:Hibernate 不要求持久化类继承任何父类或实现接口,这可以保证代码不被污染。这就是Hibernate被称为低侵入式设计的原因

1、提供一个无参的构造器:使Hibernate可以使用

2、Constructor.newInstance() 来实例化持久化类

3、提供一个标识属性(identifier property): 通常映射为数据库表的主键字段. 如果没有该属性,一些功能将不起作用,如:Session.saveOrUpdate()

4、为类的持久化类字段声明访问方法(get/set): Hibernate对JavaBeans 风格的属性实行持久化。

5、使用非 final 类: 在运行时生成代理是 Hibernate 的一个重要的功能. 如果持久化类没有实现任何接口, Hibnernate 使用 CGLIB 生成代理. 如果使用的是 final 类, 则无法生成 CGLIB 代理.

重写 eqauls 和 hashCode 方法: 如果需要把持久化类的实例放到 Set 中(当需要进行关联映射时), 则应该重写这两个方法  

实体类代码如下:

package com.atguigu.hibernate.helloworld;import java.util.Date;//2创建持久化类public class News {        private Integer id; //field    private String title;    private String author;        private Date date;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public String getAuthor() {        return author;    }    public void setAuthor(String author) {        this.author = author;    }    public Date getDate() {        return date;    }    public void setDate(Date date) {        this.date = date;    }  //带参数的构造器为了构建对象方便    public News(String title, String author, Date date) {        super();        this.title = title;        this.author = author;        this.date = date;    }       public News(){          }@Overridepublic String toString() {    return "News [id=" + id + ", title=" + title + ", author=" + author + ", date=" + date + "]";}              }

3. 创建对象-关系映射文件-News.hbm.xml

 

4. 通过 Hibernate API 编写访问数据库的代码HibernateTest.java

package com.atguigu.hibernate.helloworld;import java.sql.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;import org.junit.Test;public class HibernateTest {    @Test    public void test() {                System.out.println("test...");                //1. 创建一个 SessionFactory 对象        SessionFactory sessionFactory = null;                //1). 创建 Configuration 对象: 对应 hibernate 的基本配置信息和 对象关系映射信息        Configuration configuration = new Configuration().configure();                //4.0 之前这样创建//        sessionFactory = configuration.buildSessionFactory();                //2). 创建一个 ServiceRegistry 对象: hibernate 4.x 新添加的对象        //hibernate 的任何配置和服务都需要在该对象中注册后才能有效.        ServiceRegistry serviceRegistry =                 new ServiceRegistryBuilder().applySettings(configuration.getProperties())                                            .buildServiceRegistry();                //3).        sessionFactory = configuration.buildSessionFactory(serviceRegistry);                //2. 创建一个 Session 对象        Session session = sessionFactory.openSession();                //3. 开启事务        Transaction transaction = session.beginTransaction();                //4. 执行保存操作        News news = new News("Java12345", "ATGUIGU", new Date(new java.util.Date().getTime()));        session.save(news);                //5. 提交事务         transaction.commit();                //6. 关闭 Session        session.close();                //7. 关闭 SessionFactory 对象        sessionFactory.close();    }    }

运行测试类控制台输出

NFO: HHH000262: Table not found: NEWS二月 22, 2018 7:19:33 下午 org.hibernate.tool.hbm2ddl.SchemaUpdate executeINFO: HHH000232: Schema update completeHibernate:     insert     into        NEWS        (TITLE, AUTHOR, DATE)     values        (?, ?, ?)

 

转载地址:http://aaofo.baihongyu.com/

你可能感兴趣的文章
比RBAC更好的权限认证方式(Auth类认证)
查看>>
httpd之编译安装详解
查看>>
服务器磁盘采购分析
查看>>
Java IO 之 InputStream源码
查看>>
PHP中is_callable()函数的用法详解
查看>>
Node.js股票模拟交易后台
查看>>
android动画
查看>>
新书试读_信息系统项目管理师考试考点分析与真题详解
查看>>
LVS Nginx HAProxy 优缺点
查看>>
images对象实现图片幻灯片
查看>>
Oracle 12c 日常维护
查看>>
CF 445A DZY Loves Chessboard
查看>>
Cobbler简介
查看>>
恢复 git reset -hard 的误操作
查看>>
菜鸟初始代码旅程——修改记录
查看>>
C# WinForm 文件上传下载
查看>>
【javascript】ajax请求 编码问题导致的ie浏览器在输入中文文字后没有内容,而chrome正常搜到文字...
查看>>
Git分支操作
查看>>
Spring Integration概述
查看>>
[SAP ABAP开发技术总结]权限对象检查
查看>>