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对象