学习笔记: hibernate的环境搭建和增删改查

来源:互联网 发布:台达plc温度模块编程 编辑:程序博客网 时间:2024/06/08 00:10


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();//关闭事务
}
}
}
}
}
原创粉丝点击