Hibernate
Posted 海盗屋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate相关的知识,希望对你有一定的参考价值。
什么是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的主要内容,如果未能解决你的问题,请参考以下文章
使用反射在外部JAR / CLASS上调用包含Hibernate事务的方法(Java EE)
Hibernate CriteriaQuery where - ManyToOne 字段
Hibernate + MySQL:如何为数据库和表设置编码 utf-8
hibernate在使用getCurrentSession时提示no session found for current thread