Hibernate学习

跟struts一样,hello world很简单,这里给个框架留待以后查阅跟思路的整理。(当然是跟别人学的哈~)

分3步:加包,配置文件,写实体类。

  1. 加包这里包括:hibernate core,/required 目录下的jar包都要,slf-nop.jar mysql驱动包,这几个是基本的,其他的看工程需要还要加log4j,junit等等的其他包;
  2. 配置文件主要是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">//给提示的标签的
<hibernate-configuration>
  <session-factory>
<!-- Database connection settings -->//配置db的,因为Hibernate本来就是方便db的配置,让实体类跟数据库的表有个直接的对应关系,不需要很麻烦的各种db语句的处理,所以当然要在配置文件中连上db。
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>//驱动包
<property name="connection.url">jdbc:mysql://localhost/hibernate</property>//url
<property name="connection.username">root</property>//用户名
<property name="connection.password">gao</property>//密码

<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>//连接池,一直到都是1个,可能因为一个就够用
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>//DB方言,这边说是mysql,也可以是其他的DB
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>//线程的,还有其他的如JTA,这边不能用,因为JTA分布式事务管理,应用于多数据库访问

<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>//二级缓冲,这个没实际体验过用处
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>//显示DB的语句
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>//可以自动生成DB中的表,不用手动生成,但是显示情况中,不会这么用,都是手动生成表,然后在过来建实体类

<mapping resource="com/bjsxt/hibernate/Student.hbm.xml"/>//实体类,这个是用XML配置的,比较麻烦,现在的公司里面很少这么用了
<mapping class="com.bjsxt.hibernate.Teacher"/>//annotation配置的,直接mapping类路径就行
</session-factory>
</hibernate-configuration>

3.实体类-----如上所示有两个实体类:teacher,student

内部很简单,这边贴个annotation的teacher过来。

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity//这个表明是实体类,有了这个就可以根据实体类 自动生成表
public class Teacher {
private int id;
private String name;
private String title;

@Id//方法,根据这个可以生成不同的字段。对于主键,要写@GeneratedValue()为空默认为native。这个就可以了,orcale用sequdence,mysql用increment
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;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
 }}

然后工程算结束了,写个test类来做测试吧:

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class TeacherTest {
public static void main(String[] args) {
Teacher t = new Teacher();//生成一个对象
t.setId(4);//如果有generatedvalue此句可以省略
t.setName("t1");
t.setTitle("middle");

SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();//建个sessionfactory
Session session = sessionFactory.getCurrentSession();//获得当前session
session.beginTransaction();//使其处于活动状态
session.save(t);//保存对象到数据库,成为一条记录
session.getTransaction().commit();//执行SQL语句
 }}

然后去DB中查看记录就行~~

Hibernate 其实不难,主要是理解其原理,是要吧对象映射为db中的一条记录,保存是直接用save,update,delete,load,get等方法直接取,不用写很慢烦的面向过程的SQL语句。而且对于不同的DB都支持,可以换“方言”。

这边先总结到这,以后有收获在写~~



你可能感兴趣的:(Hibernate学习)