JAVAEE中Hibernate入门链接数据库

简单来讲,Hibernate主要是一个ORM框架,也能够说是一种规范。这种规范描述了面向对象编程到关系型数据库的映射。java

也就是说,Hibernate框架会将你建立的POJO类(传统普通类)转换映射到关系数据库中。mysql

这里再也不解释理论相关,直接了解Hibernate的基础实现方法。sql

首先,你须要一个Hibernate的包,里面封装里Hibernate框架里的全部方法。数据库

能够到官网下载这个包————http://hibernate.org/orm/downloads编程

将下载的包解压,获得一个hibernate-release-4.3.8.Final的文件夹,其lib目录下required和jpa子目录下的包添加到应用加载路径中,即可以使用Hibernate的功能了。session

同时,你还须要一个数据库驱动的JAR包。以下app


其中,ojdbc为orecle的加载驱动,sqljdbc为Mysql和sqlserver的加载驱动框架

作完以上这些,你须要配置Hibernate,须要一个配置文件和一个映射文件函数

1.hibernate.cfg.xmlsqlserver


如下为源码:<!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 配置访问数据库参数信息 -->
<!-- 数据库分类信息,这里为MySQL数据库 -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- 数据库驱动信息 -->
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- 数据库地址信息 -->
<property name="connection.url">
jdbc:mysql://localhost:3306/liuweitong
</property>
<!-- 数据库用户名信息 -->
<property name="connection.username">root</property>
<!-- 数据库密码信息 -->
<property name="connection.password">123456</property>
<!-- 在控制台输出SQL语句 -->
<property name="shwo_sql">true</property>
<!-- 实时更新数据库 -->
<property name="hbm2ddl.auto">update</property>
<!-- 加载映射文件 -->
<mapping resource="com/ph05/User.hbm.xml"/>
</session-factory>

</hibernate-configuration>

2.hibernate映射文件(其中User为(POJO)类名)建立在src根目录下面


如下为源码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name = "com.ph05.User" table = "USERS">
<!-- 主键设置 -->
<id name = "id" column = "ID">
<generator class = "native"/>
</id>
<!-- 用户名映射 -->
<property name = "username" column = "USERNAME" type = "string" not-null = "true"/>
<!-- 密码映射 -->
<property name = "password" column = "PASSWORD" type = "string" not-null = "true"/>
<!-- 权限映射 -->
<property name = "role" column = "ROLE" type = "int" not-null = "true"/>
</class>


</hibernate-mapping>

接下来就是编写PO(PO为POJO+映射文件,这两个文件必须在同一个包里面),映射文件已经写好了,而后就是写一个POJO类


该POJO含有一个无参的构造函数和一个带参数的构造函数和Getter和Setter方法


如下为源码:

package com.ph05;
import java.io.Serializable;


public class User implements Serializable {
private int id;
private String username;
private String password;
private int role;
public User(){}
public User(String username,String password,int role){
this.username = username;
this.password = password;
this.role = role;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getRole() {
return role;
}
public void setRole(int role) {
this.role = role;
}



}

最后即可以使用任何一个类的Main方法调用,并链接数据库。


下面是源码:

package com.ph05.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import com.ph05.User;
public class Test {
public static void main(String[] args){
//建立User对象
User user = new User("admin","123",1);
//实例化Configuration
Configuration configuration = new Configuration();
//加载Hibernate.cfg.xml文件
configuration.configure("/Hibernate.cfg.xml");
//建立SessionFactory
//Hibernate4.3建立SessionFactory的方式
StandardServiceRegistryBuilder standardServiceRegistryBuilder=
new StandardServiceRegistryBuilder();
standardServiceRegistryBuilder.applySettings(configuration.getProperties());
SessionFactory sessionfactory = configuration.buildSessionFactory(standardServiceRegistryBuilder.build());
//打开Session
Session session =sessionfactory.openSession();
//开始一个事物
Transaction trans = session.beginTransaction();
//持久化操做
session.save(user);
//提交事务
trans.commit();
//关闭Session
session.close();
}

}

补充一下,USER表经过上述代码,会在数据库中自动建立,可是会自动建立为user表,不区分大小写。

这里作好hibernate的记录,已作备忘。