跟struts一样,hello world很简单,这里给个框架留待以后查阅跟思路的整理。(当然是跟别人学的哈~)
分3步:加包,配置文件,写实体类。
<?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都支持,可以换“方言”。
这边先总结到这,以后有收获在写~~