Hibernate的helloworld

来源:互联网 发布:c语言开发手册 典藏版 编辑:程序博客网 时间:2024/06/07 11:37

什么是 Hibernate ?

一个框架
一个 Java 领域的持久化框架
一个 ORM 框架

对象的持久化?

狭义的理解,“持久化”仅仅指把对象永久保存到数据库中
广义的理解,“持久化”包括和数据库相关的各种操作:
保存:把对象永久保存到数据库中。
更新:更新数据库中对象(记录)的状态。
删除:从数据库中删除一个对象。
查询:根据特定的查询条件,把符合查询条件的一个或多个对象从数据库加载到内存中。
加载:根据特定的OID,把一个对象从数据库加载到内存中。

为了在系统中能够找到所需对象,需要为每一个对象分配一个唯一的标识号。在关系数据库中称之为主键,而在对象术语中,则叫做对象标识(Object identifier-OID). 


ORM思想:

ORM(Object/Relation Mapping): 对象/关系映射
ORM 主要解决对象-关系的映射

面向对象概念          面向关系概念

类                            表

对象                         表的行(记录)

属性    表的列(字段)

ORM的思想:将关系数据库中表中的记录映射成为对象,以对象的形式展现,

程序员可以把对数据库的操作转化为对对象的操作。
ORM 采用元数据来描述对象-关系映射细节, 元数据通常采用 XML 格式, 并且存放在专门的对象-关系映射文件中.

元数据:描述数据的数据,例如:描述对象-关系映射细节的文件。


重点学习:1、对象-关系映射文件2、orm api



流行的ORM框架:

Hibernate:
非常优秀、成熟的 ORM 框架。
完成对象的持久化操作
Hibernate 允许开发者采用面向对象的方式来操作关系数据库。
消除那些针对特定数据库厂商的 SQL 代码
myBatis:
相比 Hibernate 灵活高,运行速度快
开发速度慢,不支持纯粹的面向对象操作,需熟悉sql语
  句,并且熟练使用sql语句优化功能 
TopLink
OJB




安装hibernate插件:

安装方法说明(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





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



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>

//配置数据库连接的基本信息
    <property name="connection.username">root</property>
    <property name="connection.password">root</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost:3306/atguigu1</property>
//配置hibernate的基本信息


//配置hibernate所用的数据库方言
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

//执行操作时是否在控制台打印sql语句
    

    <property name="show_sql">true</property>
//是否对sql进行格式化
    <property name="format_sql">true</property>
//指定自动生成数据表的策略
    <property name="hbm2ddl.auto">update</property>
    
  //将关系-对象对应文件和hibernate配置文件关联在一起
    <mapping resource="com/atguigu/hibernate/helloworld/News.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

2、创建持久化类News

package com.atguigu.hibernate.helloworld;
import java.sql.Date;
public class News {
    private Integer id;
    private String  title;
    private String author;
    private Date date;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public News(String title, String author, Date date) {
super();
this.title = title;
this.author = author;
this.date = date;
}
@Override
public String toString() {
return "News [id=" + id + ", title=" + title + ", author=" + author
+ ", date=" + date + "]";
}
public News() {
super();
}
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;
}
}

3、创建关系-对象对应文件:News.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2015-10-4 8:19:41 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.atguigu.hibernate.helloworld.News" table="NEWS">
        
        <id name="id" type="java.lang.Integer">
            <column name="ID" />

//创建主键生成的方式
            <generator class="native" />

        </id>
        
        <property name="title" type="java.lang.String">
            <column name="TITLE" />
        </property>
        <property name="author" type="java.lang.String">
            <column name="AUTHOR" />
        </property>
        <property name="date" type="java.sql.Date">
            <column name="DATE" />
        </property>
    </class>
</hibernate-mapping>

4、通过Hibernate API编写访问数据库的代码

1、创建一个sessionFactory对象

2、创建一个session对象

3、开启事务

4、执行保存操作

5、提交事务

6、关闭session

7、关闭sessionFactory对象


package com.atguigu.hibernate.helloworld;
import static org.junit.Assert.*;
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() {
SessionFactory sessionFactory=null;
Configuration configuration=new Configuration().configure();
   ServiceRegistry serviceRegistry=
    new ServiceRegistryBuilder().applySettings(configuration.getProperties())
                                .buildServiceRegistry();
   sessionFactory=configuration.buildSessionFactory(serviceRegistry);
   Session session=sessionFactory.openSession();
   Transaction transaction=session.beginTransaction();
   News news=new News("Java", "ATGUIGU", new Date(new java.util.Date().getTime()));
   session.save(news);
   transaction.commit();
   session.close();
   sessionFactory.close();
}
}





0 0
原创粉丝点击