import?org.hibernate.Query;
import?tt.TUser;
import?tt.TUserDAO;
public?class?Delete?{
public?static?void?main(String[]?args)//主方法,用于运行二个删除操作的方法
{
???//Delete.deleteOne(13);
???//Delete.deleteTwo(10);
???//Delete.deleteThree();//没成功
}
public?static?void?deleteOne(int?id)//第一个操作方法
{
??TUserDAO?dao=new?TUserDAO();//创建一个TUser?dao的实例
??org.hibernate.Transaction?tx=dao.getSession().beginTransaction();//开始一个事务
??TUser?user?=new?TUser();
??user=(TUser)dao.getSession().get(TUser.class,?id);//跟据ID取得一个对象
??dao.getSession().delete(user);//删除这个对象
??tx.commit();//提交事务
??dao.getSession().close();关闭session
??System.out.println("Delete");
}
public?static?void?deleteTwo(int?id)//第二个操作方法
{
???TUserDAO?dao=new?TUserDAO();
???org.hibernate.Transaction?tx=dao.getSession().beginTransaction();//开始一个事务
???Query?query?=?dao.getSession().createQuery("delete?from?TUser?where?IId=?");
//跟据条件生成HQL语句
???query.setInteger(0,?id);//设定条件参数
???query.executeUpdate();执行语句
???tx.commit();//提交事务
???dao.getSession().close();关闭session
????System.out.println("Delete");
?}
}
一般是使用hql来删除,因为这样执行性能要高一点,不需要先查询。
但是如果你配置了hibernate的级联关系,要进行级联删除,就需要使用delete方法了
hibernate用的是hql而不是sql,sql是对数据库中的表进行操作,hql是对pojo对象进行操作进而影响数据库。
在hibernate3中只要在配置文件中设置HQL/SQL查询翻译器属性:
就可以直接使用update/delete的批量更新语法。
如:Query query=session.createQuery(“delete Teacher where id<5000”);>5000”);>
//引入导入的hibernate包
import net.sf.hibernate.cfg.configuration;
import net.sf.hibernate.hibernateexception;
import net.sf.hibernate.sessionfactory;
import net.sf.hibernate.session;
import net.sf.hibernate.transaction;
import java.util.list;
import com.hygj.bean.users;
public class hibernateutil {
//定义私有变量cfg用来捕获hibernate.cfg.xml配制文件
private net.sf.hibernate.cfg.configuration cfg=null;
//定义变量sf用来管理连接
private net.sf.hibernate.sessionfactory sf=null;
//定义session用来实现具体的操作
private net.sf.hibernate.session session=null;
//管理一个用户的多种操作,进行事物的管理
private net.sf.hibernate.transaction tr=null;
public hibernateutil() {
try {
cfg = new net.sf.hibernate.cfg.configuration().configure();
sf=cfg.buildsessionfactory();
}
catch (hibernateexception ex) {
}
}
//全部查询
public void chaxun(){
system.out.println("----chaxun----");
//产生回话
try {
this.sessions = this.sff.opensession();
session = sf.opensession();
//开始事务
this.trs = this.sessions.begintransaction();
tr=session.begintransaction();
//生成查询
net.sf.hibernate.query query=session.createquery("from users");
//获得结果集
list list=query.list();
java.util.iterator it=list.iterator();
while(it.hasnext()){
users user=(users)it.next();
system.out.println("id:"+user.getid());
system.out.println("name:"+user.getusername());
system.out.println("password:"+user.getpassword());
system.out.println("--------");
}
//执行完成,提交事务
tr.commit();
}
catch (hibernateexception ex) {
}
finally{
try {
session.close();
}
catch (hibernateexception ex1) {
}
}
}
//根据编号查询
public void chaxun(int id){
try {
session = sf.opensession();
tr=session.begintransaction();
//产生查询,需要根据id进行查询
net.sf.hibernate.query query=session.createquery("from users where id=?");
// net.sf.hibernate.query que=session.createquery("from users where id=:id");
//先为参数赋值,再查询
query.setinteger(0,id);
//que.setinteger("id",id);
//list list=que.list();
list list=query.list();
//进行空对象验证
if(list.size()>0){
users user=(users)list.get(0);
system.out.println("id:"+user.getid());
system.out.println("name:"+user.getusername());
system.out.println("password:"+user.getpassword());
system.out.println("--------");
}
else{
system.out.println("no record");
}
tr.commit();
}
catch (hibernateexception ex) {
}
finally{
try {
session.close();
}
catch (hibernateexception ex1) {
}
}
}
//模糊查询
public void chaxun(string name){
try {
session = sf.opensession();
tr=session.begintransaction();
//产生查询,需要根据id进行查询
net.sf.hibernate.query query=session.createquery("from users where username like ?");
// net.sf.hibernate.query que=session.createquery("from users where id=:id");
//先为参数赋值,再查询
string str="%"+name+"%";
query.setstring(0,str);
//que.setinteger("id",id);
//list list=que.list();
list list=query.list();
//进行空对象验证
if(list.size()>0){
for(int i=0;i<list.size();i++){
users user=(users)list.get(i);
system.out.println("id:"+user.getid());
system.out.println("name:"+user.getusername());
system.out.println("password:"+user.getpassword());
system.out.println("--------");
}
}
else{
system.out.println("no record");
}
tr.commit();
}
catch (hibernateexception ex) {
}
finally{
try {
session.close();
}
catch (hibernateexception ex1) {
}
}
}
//添加数据
public void add(string name,string pwd){
try {
session = sf.opensession();
tr=session.begintransaction();
//实例化新的bean 类
users user=new users();
//为bean赋值
user.setusername(name);
user.setpassword(pwd);
//保存提交
session.save(user);
tr.commit();
}
catch (hibernateexception ex) {
}
finally{
try {
session.close();
}
catch (hibernateexception ex1) {
}
}
}
//修改数据
public void update(int id,string pwd){
try {
session = sf.opensession();
tr=session.begintransaction();
//先定位数据
net.sf.hibernate.query query=session.createquery("from users where id=?");
query.setinteger(0,id);
list list=query.list();
if(list.size()>0){
users user=(users)list.get(0);
//该密码
user.setpassword(pwd);
//保存回去
session.update(user);
session.flush();
tr.commit();
system.out.println("update ok");
}
else{
system.out.println("no record can be updated");
}
}
catch (hibernateexception ex) {
}
finally{
try {
session.close();
}
catch (hibernateexception ex1) {
}
}
}
//删除数据
public void delete(int id){
try {
session = sf.opensession();
tr=session.begintransaction();
//先定位数据
net.sf.hibernate.query query=session.createquery("from users where id=?");
query.setinteger(0,id);
list list=query.list();
if(list.size()>0){
users user=(users)list.get(0);
//删除数据
session.delete(user);
session.flush();
tr.commit();
system.out.println("delete ok");
}
else{
system.out.println("no record can be deleted");
}
}
catch (hibernateexception ex) {
}
finally{
try {
session.close();
}
catch (hibernateexception ex1) {
}
}
}
public static void main(string[] args) {
hibernateutil hibernateutil1 = new hibernateutil();
//hibernateutil1.add("subin","123456");
//hibernateutil1.chaxun(3);
//hibernateutil1.update(3,"9876543");
//hibernateutil1.chaxun(3);
hibernateutil1.delete(4);
}
}
连接操作在配置文件hibernate.cfg.xml中完成
<?xml version="1.0" encoding="utf-8" ?>
<!doctype hibernate-configuration public "-//hibernate/hibernate configuration dtd//en"
" http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="dialect">
net.sf.hibernate.dialect.sqlserverdialect
</property>
<property name="show_sql">true</property>
<property name="connection.driver_class">
com.microsoft.jdbc.sqlserver.sqlserverdriver
</property>
<property name="connection.url">
jdbc:microsoft:sqlserver://localhost:1433;databasename=pubs;
</property>
<property name="connection.username">
sa
</property>
<property name="connection.password">
</property>
<mapping resource="com/hygj/bean/users.hbm.xml" />
</session-factory>
</hibernate-configuration>
org.hibernate.Session
Session接口里有delete()方法,可以直截用。
如按id删除User类的一个对象u:
this.sessio.delete(u);