Hibernate框架:使DAO层的框架,用于简化开发DAO(Data Access Object)数据访问对象
Hibernate :是一个开源的ORM(ObjectRelation Mapping,对象关系映射) 持久层框架,可以逆向开发(亮点),同时支持正向生成数据实体类。
面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。
开发hibernate的三种方式:
1. 先编写实体类(持久化类),再编写隐射文件,然后生成数据库表结构
2. 先创建数据表,再根据数据表生成对应的隐射文件和持久化类
3. 先编写隐射文件,然后根据文件生成持久化类和数据库表的结构
1.首先需要去官网下载 一般现在用4点几的版本,比较稳定 官网下载地址: http://hibernate.org/orm/downloads/
2.找Hibernate所需要的架包
这就是我们一般web 程序所需要的Hibernate架包, 复制到 WebContent 下的WEB-INF 下的 lib文件夹就可以了
3.配置文件 Hibernate.cfg.xml 文件 (默认文件头如下)
<!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>
</session-factory>
</hibernate-configuration>
下面只需要在<session-factory>
</session-factory>里面编写配置文件即可
<!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="dialect">//定义方言(定义优化的sql语句) org.hibernate.dialect.MySQLDialect </property> <property name="connection.driver_class"> //加载驱动 com.mysql.jdbc.Driver </property> <property name="connection.url"> //映射地址 jdbc:mysql://127.0.0.1:3306/mydb </property> <property name="connection.username">//连接数据库的用户名 root </property> <property name="connection.password">//连接数据库的密码 root </property> <!-- 在控制台显示sql语句 --> <property name="show_sql">true</property>//表示是否输出操作数据库的语句 <!-- 自动生成或更新数据库表 --> <property name="hbm2ddl.auto">update</property>//是否根据映射文件自动创建数据库表 <!-- 注册映射文件 --> <mapping resource="com/pojos/Users.hbm.xml"/> </session-factory> </hibernate-configuration>
然后编写 注册映射文件 Users.hbm.xml 默认的头文件如下
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.pojos"> <class name="com.pojos.Users" table="users"> // name="com.pojos.Users" 表示 类的全名 <!-- 主键 --> <id name="id" column="id"> </id> </class> </hibernate-mapping>
编写Users.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.pojos"> <class name="com.pojos.Users" table="users"> <!-- 主键 --> <id name="id" column="id"> <!-- 主键生成方式:自动生成 --> <generator class="native"/> </id> <property name="username" column="username" type="string" not-null="true"/>
// name 表示类的属性名 column 表示 数据库对应的字段 type是指数据类型 not-null 是否默认为空
这里用到的 Users 代码如下:<property name="password" column="password" type="string" not-null="true"/> </class></hibernate-mapping>
public class Users implements Serializable{ //一般需要实现序列化 为了解决数据存储和数据传输问题 /** * */ private static final long serialVersionUID = 6878527604797548849L; private int id; private String username; private String password; 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 static void main(String[] args) { Users user = new Users("zhangsan", "zs123"); //创建Configuration对象 Configuration cfg = new Configuration(); //加载注册文件 cfg.configure("/hibernate.cfg.xml"); //创建SessionFactory StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder(); builder.applySettings(cfg.getProperties()); SessionFactory factory = cfg.buildSessionFactory(builder.build()); //打开session Session session = factory.openSession(); //开始事务 Transaction trans = session.beginTransaction(); //操作 session.save(user); trans.commit(); session.close(); }
这样就实现了Hibernate的入门开发, 逆向开发