Hibernate 初体验
2021-07-09 06:07
标签:author err unicode 结构 自动生成 程序启动 hiberna 官方 ini 为什么会产生 Hibernate Mybatis 这类的dao层框架 传统的jdbc 虽然执行速度很快,但是开发效率很低,随着面向对象开发的设计思想,在面向对象编程中 将对象 进行持久化,存入关系型的数据库时,由于关系型数据库的设计思想是数学思维,在持久化时,必须要对象拆分各个属性值,才可存入数据库;传统的jdbc 持久化时 对象持久化时 ,取出对象的一个一个属性,过去繁琐,并且不便于维护,而市场上的面向对象的数据库还并不成熟,所以为了调节面向对象设计的开发思想与落后的关系型数据库之间持久化时繁琐的问题,产生了一种新的设计规范 ORM (Object Relation Mapping) 第三部:创建相应的映射文件 第四步 主配置文件 放在src目录下 官方的api上会默认去src下查hibernate.cfg.xml这个文件 还有其他方式下面介绍 最后一步测试代码了 数据库的显示 Hibernate 初体验 标签:author err unicode 结构 自动生成 程序启动 hiberna 官方 ini 原文地址:http://www.cnblogs.com/ChenD/p/7094765.html
package hibernateDemo;
import java.util.Date;
/**
* 持久化的bean类
* 注意:
* 1: id唯一标识 建议 使用封装类型
* 2:这个类不能final修饰
* 3:需要给这个类提供一个无参数的构造器,
* 4:给所有的属性提供get set方法;
* 5: 如果有设计集合数据的操作,集合类型 要使用接口类型 list 不允许实现类的类型 arrylist;
* 创建对象的时候 是用 new 构造器方法
* @author Administrator
*
*/
public class Person {
public Person(){
}
private Integer id;
private String name;
private int passWord;
private Date birthday;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPassWord() {
return passWord;
}
public void setPassWord(int passWord) {
this.passWord = passWord;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", passWord=" + passWord + ", birthday=" + birthday + "]";
}
}
xml version="1.0"?>
DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
hibernate-mapping package = "hibernateDemo">
class name="Person" table="t_person">
id name="id" >
generator class="native"/>
id>
property name="name" column="t_name"/>
property name="passWord" column="t_passWord"/>
property name="birthday"/>
class>
hibernate-mapping>
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="show_sql">trueproperty>
property name="hibernate.connection.driver_class">com.mysql.jdbc.Driverproperty>
property name="hibernate.connection.url">jdbc:mysql://localhost:3306/medicine?useUnicode=true&characterEncoding=utf-8property>
property name="hibernate.connection.username">rootproperty>
property name="hibernate.connection.password">rootproperty>
property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialectproperty>
property name="hibernate.hbm2ddl.auto">updateproperty>
mapping resource="hibernateDemo/Person.hbm.xml"/>
session-factory>
hibernate-configuration>
package test;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import hibernateDemo.Person;
public class test {
public static void main(String[] args) {
//加载 主配置文件的方式 还有一种读取properties文件的方式
//创建Configuration读取配置文件的 对象 可传参数,并加载配置文件hibernate.cfg.xml
Configuration conf = new Configuration().configure();
//通过配置文件中的配置信息 获取数据库连接
//这种写法是hibernate4之前的写法
//sessionFactory是与应用程序生命周期一致的,多线程共享的
SessionFactory factory = conf.buildSessionFactory();
//相当于一次数据库的交互 代表一次操作 只为一次线程使用 线程结束 声明 over
Session session = factory.openSession();
/**
* 增删改 是需要 事务
*/
Transaction tx = session.beginTransaction();
Person entity = new Person();
entity.setName("tom");
entity.setPassWord(123456);
entity.setBirthday(new Date());
//面向对象的方式 持久化
session.persist(entity);
/**
* 提交事务
*/
tx.commit();
session.close();
}
}
上一篇:JS递归,对称美