自己学软件编程不久,在学习中总结和记录啦一些学习的入门知识!有不足之处,请批评指正。
Hibernate入门指南
Mike zeseler
Hibernate的5个核心接口:
Session
SessionFactory
Transaction
Query
Configuration
对象“持久化”狭义理解:是把域对象永久保存到数据库中。
持久化和数据库相关的各项操作:
保存:把域对象永久保存到数据库中
更新:更新数据库中域对象发的状态。
删除: 从数据库中删除一个域对象。
加载:根据特定的oid(对象标示符)把一个域对象从数据库加载到内存中。
查询:根据特定的查询条件,把符合查询条件的一个或多个域对象从数据库加载到内存中。
一:新建项目web java项目都可以
New——》project——》webproject——》T_user
截图如:
为项目添加hibernateCapabilitise截图如
点击next-à如图:
点击--ànext如图:这一步需要详细的配置:
一:一般我们需要选择mysql数据库截图:
这里的配置需要给大家详细的说下:具体情况操作完后慢慢详细讲解:myeclipse Database Explorer的使用:
Java 前面有个窗口带+号的标示,点击下就可以出现一个下拉菜单;看看有没有Database Explorer这项,没有的话点击other进行下一步:
出现一个选框:我们选择Database Explore这项:
点击ok 完成。
Database Explore的界面截图:
我们来连接一个数据库。Myeclipse Derby 是myeclipse自带的一个数据库,它比mysql支持更好的事物(trasaction)。
右击鼠标 new一个 newDatabase Connection Driver
这里需要天相关的配置:
Driver template 选择你装好的数据库名称:我以mysql为例:
Driver name: mysql55 随你的意思取就ok。
Connection url:jdbc:mysql://<hostname>[<:3306>]/<dbname>
我用的是mysql5则是:jdbc:mysql://localhost:3306/test.
(连接数据库用户名)username:root
Password: 我的密码为空();
Driver jars 驱动类,不同的数据库有不同的jar包,我用的是mysqljar包。
点击Save password,Connection to database on我们不需要理会,配置好的的截图:
点击next—》点击finish ok完成,以上就是Database Explore。Easy吧。^_^
点击next—》下一步截图:
去掉create SessionFactory class 点击finish完成。
完成后的截图
一般的hibernate.cfg.xml配置文件:
<?xml version="1.0" encoding="gbk"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!—显示实际操作数据库时的sql(这里是mysql数据库) -->
<property name="show_sql">true</property>
<!—将显示的sql排版,方便观看-->
<property name="format_sql">true</property>
<!—sql方言,这里设定的是mysql -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!—JDBC驱动类-->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- JDBC URL -->
<property name="connection.url">jdbc:mysql://localhost/demo</property>
<!—连接数据库用户名 -->
<property name="connection.username">root</property>
<!—数据库密码(我的数据库密码为空) -->
<property name="connection.password"></property>
<!—下面的是数据库要映射的文件-->
</session-factory>
</hibernate-configuration>
|
建表:建表语句
Create table T_user(
id bigint not null auto_increment,
name varchar(255),
age bigint,
primary key(id)
)engine=myisam default charset=gbk//支持中文防止插入数据出现乱码
|
Hibernate.cfg.xml实例
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<!-- 连接数据可的用户名 -->
<property name="connection.username">root</property>
<!-- jdbc url -->
<property name="connection.url">
jdbc:mysql://localhost:3306/test
</property>
<!-- 数据库方言(sql方言)-->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- 连接数据库的名字-->
<property name="myeclipse.connection.profile">mysql5</property>
<!-- 接数据驱动类-->
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- 数据库映射文件-->
<mapping resource="dao/TUser.hbm.xml" />
</session-factory>
</hibernate-configuration>
|
首先咋们建立一张表:如上的建表语句:打开database explorer连接数据库,右击Connected to mysql5,选择New SQL Editor,写上建表语句
截图如下;
点击绿色的三角符号,建表ok啦!
Ok进行下一步:在建好的表上右击:选择Hibernate Reverse Engineering,这里需注意我进行这步之前首先一定要关掉如上图的sql Editor.
Java src folder: 点击Browser
选择T_user下的目录src:点击ok
进行下一项:java pakage 我们需填上个dao,名称无所谓,但是我们要让别人理解,更容易清楚我们的编程设计思想,编程不是让别人看不懂,自己很牛,但是我们的编码的最终思想是越来越简单,不是所谓的越搞越复杂,让别人更了解我们的程序。
具体的截图如下:
点击下一步
这步其实没有什么可以填的,我们直接下一步:
需要注意的是
1:include referenced table(A->B)
2:include referenced table(A<-B)
我们需要勾选他们:
好一切ok啦^_^。咋们点击finish完成。
生成的目录
所限我们需要改的是:Tuser.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="dao.TUser" table="t_user" catalog="test">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="identity" />
</id>
<property name="name" type="java.lang.String">
<column name="name" />
</property>
<property name="age" type="java.lang.Long">
<column name="age" />
</property>
</class>
</hibernate-mapping>
|
<generator class="identity" />在各项需要改成前面的或是identity。
BaseHibernateDAO
package dao;
import org.hibernate.Session;
/**
*Dataaccessobject(DAO)fordomainmodel
*@authorMyEclipsePersistenceTools
*/
publicclass BaseHibernateDAO implements IBaseHibernateDAO {
public Session getSession() {
return HibernateSessionFactory.getSession();
}
}
|
|
IBaseHibernateDAO
package dao;
import org.hibernate.Session;
/**
*Dataaccessinterfacefordomainmodel
*@authorMyEclipsePersistenceTools
*/
publicinterface IBaseHibernateDAO {
public Session getSession();
}
|
HibernateSessionFactory
TUser
package dao;
/**
*TUsergeneratedbyMyEclipsePersistenceTools
*/
publicclass TUser implements java.io.Serializable {
// Fields
private Long id;
private String name;
private Long age;
// Constructors
/**defaultconstructor*/
public TUser() {
}
/**minimalconstructor*/
public TUser(Long id) {
this.id = id;
}
/**fullconstructor*/
public TUser(Long id, String name, Long age) {
this.id = id;
this.name = name;
this.age = age;
}
// Property accessors
public Long getId() {
returnthis.id;
}
publicvoid setId(Long id) {
this.id = id;
}
public String getName() {
returnthis.name;
}
publicvoid setName(String name) {
this.name = name;
}
public Long getAge() {
returnthis.age;
}
publicvoid setAge(Long age) {
this.age = age;
}
}
|
TUserDAO
测试代码:HibernateDemo
package onlyfun.caterpillar;
import org.hibernate.Session;
import org.hibernate.Transaction;
import dao.HibernateSessionFactory;
import dao.TUser;
publicclass HibernateDemo {
publicstaticvoid main(String[] args) {
TUser tuser = new TUser();
tuser.setName("hibernate测试");
tuser.setAge(new Long(23));
// 開啟Session,相當於開啟JDBC的Connection
Session session = HibernateSessionFactory.getSessionFactory().openSession();
// Transaction表示一組會話操作
Transaction tx= session.beginTransaction();
// 將物件映射至資料庫表格中儲存
session.save(tuser);
tx.commit();
session.close();
System.out.println("新增資料OK!請先用MySQL觀看結果!");
HibernateSessionFactory.shutdown();
}
}
|
测试结果:
测试ok,呵呵。
还有个实例大家练习下我这里只给出建表语句:或测试代码,其他的与上面的方法一样:
建表语句:
Create table Student(
Id int not null auto_increment,
Uername varchar(200) not null,
Password vachar(20) not null,
Age int,
Primary key (id)
)engine = myisam default charset=gbk
|
测试代码:
package HibernateTransaction;
import java.util.List;
import dao.Student;
import dao.StudentDAO;
publicclass HibernateDAOTest {
privatestatic Object results;
publicstaticvoid main(String [] args){
//实例化dao
StudentDAO dao = new StudentDAO();
//打开事务
org.hibernate.Transaction tran = dao.getSession().beginTransaction();
//生成普通java类
Student bean = new Student();
//设置属性
bean.setUername("struts测试");
bean.setPassword("1234");
bean.setAge(100);
//插入数据
dao.save(bean);
//提交事务
tran.commit();
List<Student> results= dao.findAll();
for(Student o : results) {
System.out.println("编号:"+o.getId());
System.out.println("姓名:"+o.getId());
}
dao.getSession().close();
}
}
|