Hibernate如何去学习
——Helloword
本文章纯属个人见解,本人大三学生,学校上课仅仅讲到了SSH框架中的Struts2,对于Hibernate和Spring,在此之前,不曾有过任何接触
根据传智播客官网中提供的免费视频自学ing,部分资料源自于此
转载请注明出处
如何去使用Hibernate呢,当然,跟struts2一样,导入相关包呗,一般需要导入的包有:
hibernate-distribution-3.6.0.Final 目录下的hibernate3.jar文件
hibernate-distribution-3.6.0.Final/lib/jpa 目录下的hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate-distribution-3.6.0.Final/lib/required 目录下的全部文件:
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
slf4j-api-1.6.1.jar
另外还是把mysql数据库链接驱动包夜添加进入吧,并且与上述包放在lib目录中,并且添加到项目的buildPath中去
建立一个Mysql数据库,名为study_hibernate360,并且建立一个表,名为t_user,详细信息如下:
create database
study_hibernate360;
create table t_user (id int primary key default character set utf8,name varchar(20) );
首先必须配置的一个配置文件,一般情况下,取名为Hibernate.cfg.xml,并且位置通常都src根目录下,在不熟悉的情况下,不要随意更改名字以及路径,HelloWorld中该配置文件如下:
<!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 name="foo">
<!-- 连接数据库基本信息
包括数据库连接名javaee
数据库链接urljdbc:mysql://localhost:3306/study_hibernate360
用户名root
密码1
链接驱动com.mysql.jdbc.Driver
Hibernate数据库链接方言,mysql专属的一个类org.hibernate.dialect.MySQLDialect-->
<property name="myeclipse.connection.profile">javaee</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/study_hibernate360</property>
<property name="connection.username">root</property>
<property name="connection.password">1</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect</property>
<!-- 常量配置
show_sql 表示将生成的sql查询语句打印到控制台,默认false -->
<property name="show_sql">true</property>
<!-- 映射文件位置配置
一般将实体与数据库表映射文件都单独分开,方便管理,在本文件中注明相关位置即可
HelloWorld中仅仅一个实体-->
<mapping resource="hibernate/helloworld/TUser.hbm.xml"/>
</session-factory>
</hibernate-configuration>
接下来,库表对应的实体类,TUser.java
对应的代码如下:
package hibernate.helloworld;
public class TUser {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
再接下来,对应的一个实体与库表的映射文件,通常取名为实体名一样,加上hbm.xml,即:TUser. 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="hibernate.helloworld">
<!-- 实体TUser对应数据库表t_user
实体属性id即为表主键,对应表列id,并且是采用数据库自带的自增长策略
实体属性name对应表列name -->
<class name="TUser" table="t_user">
<id name="id" type="int" column="id" >
<generator class="native"/>
</id>
<property name="name" type="string" column="name"/>
</class>
</hibernate-mapping>
那么最后就是一个实现类,这里我仅仅写了一个利用hibernate往数据库添加数据的操作
使用注解@Test来测试运行,(需要一定环境,引入JUnit4相关包就行)
package hibernate.helloworld;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
public class App {
private static SessionFactory sessionFactory;//静态工厂,保证只产生一个
static { //写在static里面,保证只加载一次
Configuration cfg = new Configuration(); //配置文件管理类
cfg.configure("hibernate.cfg.xml"); //读取配置文件
sessionFactory = cfg.buildSessionFactory();//根据配置文件产生session工厂
}
@Test //test注解
public void testSave(){
/*
* 往数据库存数据,需要什么
* 最核心的一个类Session,用Session来保存数据,那个如何让数据持久化的存在呢
* 那么必须有的就是事物了,事物提交,持久化存在
* 务必关闭session
*/
try{
TUser user = new TUser();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
user.setName("张三");
session.save(user);
tx.commit();
session.close();
System.out.println("1111111111");
}catch(Exception e){
e.printStackTrace();
}
}
}
HelloWorld包(Java Project):点击打开链接
hibernate-distribution-3.6.0.Final包:无线网卡上传太慢额,去了学校在上传