Hibernate入门一
什么是ORMHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,是一个关系数据库ORM框架。
Hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 (来自百度百科)
主流的ORM框架ORM是Object Relational Mapping的简写,是一种程序技术,它实现了对象模型和关系模型之间的转换。
从理论效果上来说,它其实创建了一个可在编程语言里使用的“虚拟对象数据库”。
Hibernate优点1.JPA(JAVA Persistence API):通过JDK 5.0注解或XML描述对象-关系表的映 射关系(只有接口规范)
2.Hibernate:流行ORM框架,通过对象-关系映射配置,可以完全脱离底层SQL
3.MyBatis 本是apache的一个开源项目 iBatis,支持普通 SQL查询,存储过程和高级映射的优秀持久层框架
4.Apache DBUtils 、Spring JDBCTemplate
初体验1.实现了对JDBC的封装,大大简化了持久层代码繁琐的重复性代码
2.简化了编码的工作
3.使用反射的机制
4.因为是一个轻量级的框架,性能非常好
准备工作
1.导包
2.编写JavaBean
3.配置*.hbn.xml
4.配置hibernate.cfg.xml
1.导包 核心包 必须包 驱动包2.编写JavaBeancreate database hibernate;use hibernate;create table t_user( id int auto_increment primary key, username varchar(20), password varchar(20));public class User { private int uid; private String username; private String password; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } 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; } @Override public String toString() { return "User{" + "uid=" + uid + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; }}3.配置*.hbn.xml<?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> <!--配置类和表的对应关系--> <!-- name:全类名 table:表名 --> <class name="cn.robin.hibernate.demo01.User" table="tb_user"> <!-- 要求实体类有唯一值 要求表中有一个属性有唯一值 --> <id name="uid" column="uid"> <!--native表示主键自动增长--> <generator class="native" /> </id> <!--配置其他属性--> <property name="username" column="username" /> <property name="password" column="password" /> </class></hibernate-mapping>4.配置核心文件<?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 元素用于配置Hibernate中的属性 键:值 --> <!-- hibernate.connection.driver_class : 连接数据库的驱动 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- hibernate.connection.url : 连接数据库的地址,路径 --> <property name="hibernate.connection.url">jdbc:mysql///hibernate</property> <!-- hibernate.connection.username : 连接数据库的用户名 --> <property name="hibernate.connection.username">robin</property> <!-- hibernate.connection.password : 连接数据库的密码 --> <property name="hibernate.connection.password">robin</property> <!--配置hibernate(可选)--> <!--有SQL语句输出--> <property name="hibernate.show_sql">true</property> <!--对语句进行格式化--> <property name="hibernate.format_sql">true</property> <!-- hibernate创建表的配置 update:如果不存在表,则创建,如果存在,则更新 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 配置数据库方言 MySql:limit Oracle:rownum --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 配置本地线程绑定session--> <property name="hibernate.current_session_context_class">thread</property> <!--把映射文件加载到核心配置文件中--> <mapping resource="cn/robin/hibernate/demo01/User.hbm.xml" /> </session-factory></hibernate-configuration><!-- 映射配置文件 1.映射配置文件的位置没有任何要求 2.映射配置文件标签中name属性都是实体类的名称 column是表中字段的名称 class中name属性的值是实体类的全路径 3.id和property标签中的column属性可以省略,默认是name属性的值 4.property标签中的type属性,用来设置字段的类型,自动对应类型--><!-- 核心配置文件 1.必须写在session-factory标签中 2.名称和位置是固定的 src hibernate.cfg.xml-->
接下来就是测试了
public void demo() { // 加载hibernate核心配置文件 Configuration configuration = new Configuration(); configuration.configure(); // 创建SessionFactory封装对象 // 这个关系中,可能会根据映射关系创建表 SessionFactory sessionFactory = configuration.buildSessionFactory(); // 使用SessionFactory创建Session // 类似Connection Session session = sessionFactory.openSession(); // 开启事务 Transaction transaction = session.beginTransaction(); // crud User user = new User(); user.setUsername("robin"); user.setPassword("123"); // 调用session进行添加操作 session.save(user); // 提交事务 transaction.commit(); // 关闭资源 session.close(); sessionFactory.close(); }
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。