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> <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=BK</property> <property name="hibernate.connection.username">sa</property> <property name="hibernate.connection.password">112358</property> <!-- 当发现报dialect was not set时说明name=“方言”没写对 --> <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property> <!-- 控制台显示sql --> <property name="hibernate.show_sql">true</property> <mapping resource="hibernate/User.hbm.xml"></mapping> </session-factory>
</hibernate-configuration>
**********************************************************************************************************************************
hibernate.UserT
package hibernate; import java.util.Date; public class UserT { private String id; private String name; private Date createTime; private Date exprieTime;
..........get,set方法
}
**********************************************************************************************************************************
User.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">
<hibernate-mapping>
<class name="hibernate.UserT" table="UserT2"><!-- 不预设表名,创建表时就会以实体类名命名 -->
<!-- 对主键设置 -->
<id name="id" column="id"><!-- 主键名相同就不需要映射 -->
<!-- generator是对主键("id")的设置 -->
<generator class="uuid"></generator>
</id>
<!-- 若表中字段和类中属性名称一样就不许要设置,名称对应关系,不一样就需要设置 -->
<!-- type中的类型需要 小写 不然会报错 -->
<!-- name属性必须,其余属性据情况而论 -->
<property name="name" type="string" column="name" not-null="true" length="1000"></property>
<property name="createTime" ></property>
<property name="exprieTime" ></property>
</class>
</hibernate-mapping>
**********************************************************************************************************************************
hibernate.Client
package hibernate;
import java.util.Date;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
Configuration cfg=new Configuration().configure();//读取hibernate配置文件
//创建表,若表名未设置则会默认以实体类名命名,另外表名若是已存在会被删除重修创建
SchemaExport export=new SchemaExport(cfg);
//export.create(true, true);
SessionFactory factory=cfg.buildSessionFactory();//建立Sessionfactory
Session session=null;//获取session
try{
session=factory.openSession();
session.beginTransaction();//开始事物
UserT userT=new UserT();
//插入操作
//
userT.setId("7");//若预设了主键生成方式(此处是uuid),在此set也没用
//
userT.setName("超人");
//
userT.setCreateTime(new Date());
//
userT.setExprieTime(new Date());
//
session.save(userT);//保存userT对象
//
session.getTransaction().commit();//开启事务
//全体查询 HQL方式
//
Query query=session.createQuery("from UserT where name='超人' ");//UserT不是表名,而是实体类名
//
List list=query.list();
//
System.out.println(list);
//
session.getTransaction().commit();
//根据主键查询
//
userT=(UserT)session.get(UserT.class,"2" );
//
System.out.println(userT);
//
session.getTransaction().commit();
//根据id删除(方式1)按照主键删除
//
userT=(UserT)session.get(UserT.class,"2c90e6dd5c7b3b9e015c7b3ba0fd0001");
//
session.delete(userT);
//
session.getTransaction().commit();
//根据id删除(方式2)按照主键删除
//
userT.setId("5");
//
userT.setName("超人");//非空字段也需要写上
//
session.delete(userT);
//
session.getTransaction().commit();
//
//使用HQL删除
//
Query query=session.createQuery(" delete FROM UserT Where name= ? ");
//
query.setString(0,"钢铁侠");
//
query.executeUpdate();
//
session.getTransaction().commit();
//更新(按照主键更新)
//
userT=(UserT) session.get(UserT.class, "2c90e6dd5c772efd015c772efff20001");
//
userT.setName("钢铁侠");
//
userT.setCreateTime(new Date());
//
session.update(userT);
//
session.getTransaction().commit();
//使用HQL更新
//
Query query=session.createQuery("update UserT set name=?,id=? where name =? and id='2c90e6dd5c7b3b70015c7b3b73400001'" );
//
query.setString(0, "超人");
//
query.setString(1, "2");
//
query.setString(2,"钢铁侠");
//
query.executeUpdate();
//
session.getTransaction().commit();
userT=(UserT) session.load("UserT", "1");
System.out.println(userT.getName());
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();//回滚事务
}finally{
if(session!=null){
if(session.isOpen()){
session.close();//关闭事务
}
}
}
}
}