1、所需要架包
直接把hibernate中lib/required中的所有包放进去以及连接oracle数据库的架包。
2、写实现类(例如:标签类)
package com.chinasofti.ask.entity;
import java.util.HashSet;
import java.util.Set;
public class Tag {
private String id; //主键id
private String name; //标签名
private int questionNums; //问题的数量
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getQuestionNums() {
return questionNums;
}
public void setQuestionNums(int questionNums) {
this.questionNums = questionNums;
}
3、写hibernate.cfg.xml配置文件(放在src目录下)
<!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="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<!-- URL -->
<property name="connection.url">
jdbc:oracle:thin:@localhost:1521:ORCL
</property>
<property name="connection.username">jung</property>
<property name="connection.password">jung</property>
<property name="dialect">
org.hibernate.dialect.Oracle12cDialect
</property>
<!-- 是否显示sql语句 -->
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<!-- 映射Tag.hbm.xml文件 -->
<mapping resource="com/chinasofti/ask/entity/Tag.hbm.xml" />
</session-factory>
</hibernate-configuration>
4、写Tag.hbm.xml配置文件(放在实体类包下)
<!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.chinasofti.ask.entity">
<class name="Tag" table="t_tag">
<id name="id">
<!-- uuid自动生成id主键 -->
<generator class="uuid" />
</id>
<property name="name" />
<property name="questionNums" />
</class>
</hibernate-mapping>
5、写hibernate连接工具类
package com.chinasofti.ask.util;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class HibernateUtil
{
private static SessionFactory factory;
static{
Configuration configuration=new Configuration().configure();
factory=configuration.buildSessionFactory();
}
public static SessionFactory getFactory()
{
return factory;
}
public static Session getSession()
{
Session session=HibernateUtil.getFactory().openSession();
return session;
}
//增加
public static <T> void add(T t)
{
Session session=getSession();
Transaction transaction=session.beginTransaction();
session.save(t);
transaction.commit();
session.close();
}
//修改
public static <T> void update(T t) {
Session session=getSession();
Transaction transaction=session.beginTransaction();
session.update(t);
transaction.commit();
session.close();
}
//删除
public static <T> void delete(Class<T> c, String id)
{
Session session=getSession();
Transaction transaction=session.beginTransaction();
session.delete(session.get(c, id));
transaction.commit();
session.close();
}
//根据id查询
public static <T> T query(Class<T> c, String id)
{
Session session=getSession();
Transaction transaction=session.beginTransaction();
T t=session.get(c, id);
transaction.commit();
session.close();
return t;
}
//查询全部
public static <T> List<T> queryAll(Class<T> c)
{
Session session=getSession();
Transaction transaction=session.beginTransaction();
List<T> list=session.createQuery("from "+c.getSimpleName()).list();
transaction.commit();
session.close();
return list;
}
}
6、写DAO层
package com.chinasofti.ask.dao;
import java.util.List;
import com.chinasofti.ask.entity.Tag;
import com.chinasofti.ask.util.HibernateUtil;
public class TagDao
{
public void addTag(Tag tag)
{
HibernateUtil.add(tag);
}
public void updateTag(Tag tag)
{
HibernateUtil.update(tag);
}
public void deleteTag(String id)
{
HibernateUtil.delete(Tag.class,id);
}
public Tag queryTag(String id)
{
return HibernateUtil.query(Tag.class, id);
}
public List<Tag> queryAllTag()
{
return HibernateUtil.queryAll(Tag.class);
}
}
7、写测试类(需要导入junit测试包)
package com.chinasofti.ask.test;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import com.chinasofti.ask.dao.TagDao;
import com.chinasofti.ask.entity.Tag;
public class TestTag
{
private TagDao tagDao;
@Before
public void before()
{
tagDao=new TagDao();
}
@Test
public void addTag()
{
Tag tag=new Tag();
tag.setName("string");
tag.setQuestionNums(2);
tagDao.addTag(tag);
}
@Test
public void deleteTag(){
tagDao.deleteTag("2c848f9f555c031b01555c031f1f0000");
}
@Test
public void update()
{
Tag tag=tagDao.queryTag("2c848f9f5558a9ec015558a9f2f60002");
tag.setQuestionNums(3);
tagDao.updateTag(tag);
}
@Test
public void query()
{
Tag tag=tagDao.queryTag("2c848f9f5558a9ec015558a9f2f60002");
System.out.println(tag.getName()+","+tag.getQuestionNums());
}
@Test
public void queryAll()
{
List<Tag> list=tagDao.queryAllTag();
for (Tag tag : list)
{
System.out.println(tag.getId()+","+tag.getName());
}
}
}