java SSH第一章学习内容(Hibernate入门,配置文档添加序列,Hibernate三种状态)

思路:

创建数据库连接
MYSQL
1.点击页面右上角,选择Database

2.空白地区选择New

3.填写相应的数据库信息(Add JARs为mysql的jar包路径)


Oracle
1.基本步骤一样,这里需要注意选择Oracle(Thin driver)
2.URL路径前面固定,后面跟数据库名字
3.填写管理员的账户密码
4.选择的jar包是在Oracle路径下的ojdbc6.jar包
5.先测试一下是否连接成功
可参考:https://jingyan.baidu.com/album/ad310e80ab1c8c1849f49e22.html?picindex=1




添加Hibernate支持
 

1.新建项目并添加Hibernate支持(右键项目Myelipse-addHibernate)
2.选择版本号,是否备份,Next-Next

3.选择创建好的数据库连接,Next即可

4.这一步要选择一个包存储相关配置信息,设置完毕后点击Finish






使用Hibernate生成实体类和Dao
1.选择要生成的表右键点击-Hibernate

2.根据需求清空填写是否生成实体类和DAO

3.选择native,然后Finish即可




只有实体类的增删改查

参考代码:
public class test {
    public static void main(String[] args) {
        Configuration cu=new Configuration().configure();    //读取配置文件
        SessionFactory sf =cu.buildSessionFactory();    //获得session    
        Session session = sf.openSession();
        Transaction tr = session.getTransaction();
        
        /*//查询
        User user=(User)session.get(User.class, 10);    //通过session反射机制获取相应数据
        System.out.println(user.getUid());*/
        
        /*//增加
        tr.begin();
        User user = new User("豪哥","123");
        session.save(user);
        tr.commit();*/
        
    /*    //修改
        tr.begin();
        User user =  new User();
        user.setUid(10);
        user.setUname("豪爷");
        user.setUpwd("123");
        session.update(user);
        tr.commit();*/
        
        //删除
        tr.begin();
        User user=(User)session.get(User.class, 9);
        session.delete(user);
        tr.commit();
    }
}





使用生成的Dao进行增删改查
1.自动生成的没有update方法,复制save的进行修改,加上开始和提交方法即可,update里面的方法需要改下,截图未改(应改成getSession().update(transientInstance);)

2.删除方法不能直接使用,需要修改一下

3.测试类中,删除特别一点,其他都是通过dao.方法进行操作


参考代码:
public class Test {
    public static void main(String[] args) {
        UserDAO userdao = new UserDAO();
        /*//增加
        User user = new User("哥CG","111");
        userdao.save(user);*/
        
        //删除
        User user = userdao.findById(11);
        userdao.delete(user);
    
        /*//修改
        User user = new User();
        user.setUname("CGGGG");
        user.setUpwd("123");
        userdao.update(user);*/
        
        //查询
        /*    List<User> li = userdao.findByExample(user);
        for (User l:li) {
            System.out.println(l.getUname()+l.getUid());
        }*/
    }
}


二.添加序列
1.首先要在数据库创建一个序列
2.在自动生成的XXXX.xml中进行修改(

 <param name="sequence">序列名</param>





三.知识点 Hibernate java三种状态
瞬时状态,持久状态,游离状态

1瞬时状态(Transient)

通过new创建对象后,对象并没有立即持久化 他并未与数据库发生任何关系,此时java对象的状态为瞬时状态,Session对与瞬时状态的对象一无所知,当对象不在被其他对象引用时他的数据也就丢失了,对象将按照垃圾回收机制处理

2持久状态(Persistent)
当对象与Session关联 被Session管理时 他就除于持久状态,处于持久状态的对象拥有数据标识(数据库中的主键值)那么对象是什么时候与session对象关联的呢

有两种方式:第一种通过Session的查询接口或者是get()方法或者是load方法()从数据库中加载对象的时候,家在状态的对象,通过调用session的save方法或者saveOrUpdate方法时java对象也与session发生关联,对于处于持久状态的对象,session会跟踪和管理他们,如果对象的内部状态发生了任何变化,hibernate会选择合适的实际(如事务提交时)将变更固化到数据库中。

3游离状态(Detached)处于持久化的对象 脱离与其关联的Session管理后对象就处于游离状态,处于游离状态的对象Hibernate无法感知到对象的任何操作Session提供了两个方法(Update() merge())将处于游离状态的对象与一个新的session发生关联,这是对象的状态就从游离转持久化。


session.clear();session清除缓存
session.close();把session关闭
session.evict(goods);只清除存放在session的goods对象

猜你喜欢

转载自blog.csdn.net/JayVergil/article/details/81877220