什么是hibernate?
hibernate是一个orm框架,实现了对JDBC的封装。通过xml文件来实现类和表之间的映射,这样就可以使用操作对象的方式来操作数据库。
官网:http://hibernate.org/
这里使用最新的5.3版本,下载到本地。
hibernate框架搭建:
1.导入包 下载后将lib/required文件夹中的jar包以及mysql数据库的驱动jar包(mysql-connector-java-5.1.46.jar)导入到项目中
2.写全局配置文件 创建hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?><!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> ???????<!--数据库驱动类全称 ?--> ???????<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> ???????<!--数据库url地址 ?--> ???????<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/david2018_db?characterEncoding=UTF-8</property> ???????<!--用户名 ?--> ???????<property name="hibernate.connection.username">root</property> ???????<!--密码 ?--> ???????<property name="hibernate.connection.password">1234</property> ???????<!--方言 --> ???????<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> ???????<!--执行DDL的类别: ???????create:每次都删除新建 ???????update:存在就修改,不存在就新建 ?--> ???????<property name="hibernate.hbm2ddl.auto">update</property> ???????<!--是否显示SQL语句 ?--> ???????<property name="hibernate.show_sql">true</property> ???????<!--是否格式化SQL语句 ?--> ???????<property name="hibernate.format_sql">true</property> ???????<!-- 启用getCurrentSession,默认未启用 --> ???????<property name="hibernate.current_session_context_class">thread</property> ???????<!--基于xml映射文件: 映射文件加载。路径 --> ???????<mapping resource="com/hibernate/domain/User.hbm.xml"></mapping> ???</session-factory></hibernate-configuration>
3.实体类
package com.hibernate.domain;public class User { ???private int UserId; ???private String UserName; ???private String PassWord; ???private int Age; ???private String Sex; ???public User(){ ???} ???public User(String userName,String password,int age,String sex){ ???????this.UserName = userName; ???????this.PassWord = password; ???????this.Age = age; ???????this.Sex = sex; ???} ???public int getUserId() { ???????return UserId; ???} ???public void setUserId(int UserId) { ???????this.UserId = UserId; ???} ???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 getAge() { ???????return Age; ???} ???public void setAge(int Age) { ???????this.Age = Age; ???} ???public String getSex() { ???????return Sex; ???} ???public void setSex(String Sex) { ???????this.Sex = Sex; ???}}
4.编写对应实体类的User.hbm.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping ???????SYSTEM ???????"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" ><!--映射标签 package:内部类的所在的包名 --><hibernate-mapping package="com.hibernate.dao"> ???<!--需要设置的映射类:设置该类对应的表 ?--> ???<!--属性: ???name:类名 ???table:表名 ?--> ???<class name="com.hibernate.domain.User" table="User"> ???????<!--id:主键,name:属性名称,column:字段名称 ?--> ???????<id name="UserId" column="UserId"> ???????????<!--generator:主键生成策略 ???????????class:标记主键如何生成 ???????????取值: ???????????1、native:自动增长,会根据当前的数据库自动切换 ???????????2、identity:mySQL的自增策略 ???????????3、sequence:Oracle的自增标记 ???????????4、uuid:32位字符串 ???????????5、assigned:自定义字符串 ???????????6、foreign:外键 ???????????7、increment:自己维护自增关系 ?????????????--> ???????????<generator class="native"/> ???????</id> ???????<!--配置属性对应的字段 ?--> ???????<property name="UserName" column="UserName"/> ???????<property name="PassWord" column="PassWord"/> ???????<property name="Age" column="Age"/> ???????<property name="Sex" column="Sex"/> ???</class></hibernate-mapping>
5.测试
import com.hibernate.domain.User;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;public class Main { ???public static void main(String[] args) { ???????// 加载配置文件 ???????Configuration configuration = new Configuration().configure(); ???????// 创建Session工厂 ???????SessionFactory sessionFactory = configuration.buildSessionFactory(); ???????// 创建Session对象 ???????Session session = sessionFactory.openSession(); ???????// 开启事务 ???????Transaction tx = session.beginTransaction(); ???????User user = new User("测试", "666666",18,"男"); ???????//执行保存 ???????session.save(user); ???????//提交事务 ???????tx.commit(); ???????session.close(); ???????sessionFactory.close(); ???}}
这样就可以像表中插入一条数据。
Hibernate(一)
原文地址:https://www.cnblogs.com/baidawei/p/9058013.html