当前位置 : 主页 > 编程语言 > c++ >

hibernate

来源:互联网 收集:自由互联 发布时间:2021-07-03
gistfile1.txt //1、加入相关jar包//2、src下创建hibernate.cfg.xml文件 // root root com.mysql.jdbc.Driver jdbc:mysql:///h // // org.hibernate.dialect.MySQLDialect //hibernate-release-4.3.9.Final\project\etc\hibernate.properties //
gistfile1.txt
//1、加入相关jar包
//2、src下创建hibernate.cfg.xml文件
	
 
  
    	//
  
    	
  
   root
  
    	
  
   root
  
    	
  
   com.mysql.jdbc.Driver
  
    	
  
   jdbc:mysql:///h
  
    	
    	//
  
    	//
  	 
    	
  
   org.hibernate.dialect.MySQLDialect
  //hibernate-release-4.3.9.Final\project\etc\hibernate.properties
    	//
  
    	
  
   true
  
    	//
  
    	
  
   true
  
    	//
  
    	
  
   update
  //update更新不删除原有的列名,create删除原有的表重新创建,create-drop当sessionFactory
														//一旦关闭表就自动删除		
    	//
  
    	
  
		
		//
  
    	
  
   2
  
    	
  
   2
  
    	
  
   5000
  
    	
  
   100
  
    	
  
   300
  
    	
  
   2
  
    	
  
   false
  
    
 
//3、写一个实体类
	public class News {
		private Integer id;
		private String title;
		private String author;
		private Date date;
		public Integer getId() {
			return id;
		}
		public void setId(Integer id) {
			this.id = id;
		}
		public String getTitle() {
			return title;
		}
		public void setTitle(String title) {
			this.title = title;
		}
		public String getAuthor() {
			return author;
		}
		public void setAuthor(String author) {
			this.author = author;
		}
		public Date getDate() {
			return date;
		}
		public void setDate(Date date) {
			this.date = date;
		}
		public News(String title, String author, Date date) {
			super();
			this.title = title;
			this.author = author;
			this.date = date;
		}
		public News() {
		}
		@Override
		public String toString() {
			return "News [id=" + id + ", title=" + title + ", author=" + author
					+ ", date=" + date + "]";
		}
		
	}
//4、生成News.hbm.xml映射文件
	
 
        
   
    
    
  
        
   
    
  
        
   
    
  
        
   
    
  
    
 
//5、写一个测试类
	SessionFactory sessionFactory = null;
	//创建Configuration获取配置信息和映射关系
	Configuration configure = new Configuration().configure();
	//创建ServiceRegistry对象任何配置都需要注册才生效
	ServiceRegistry buildServiceRegistry = new ServiceRegistryBuilder().applySettings(configure.getProperties())
								.buildServiceRegistry();
	//创建SessionFactory对象
	sessionFactory = configure.buildSessionFactory(buildServiceRegistry);
	//创建Session对象
	Session openSession = sessionFactory.openSession();
	//开启事物
	Transaction beginTransaction = openSession.beginTransaction();
	//执行保存操作
	News news = new News("Java","gmy",new Date(new java.util.Date().getTime()));
	openSession.save(news);
	//提交事务
	beginTransaction.commit();
	//关闭Session
	openSession.close();
	//关闭SessionFactory对象
	sessionFactory.close();
	
//Session缓存(一级缓存)
	//flush():使数据表中的记录和对象的状态保持一致,可能会发出对应的SQL语句
		//1、如果数据没有变则不发送,如果改变,则发送SQL语句
	//refresh():会强制发送SELECT语句,已使Session缓存中的对象的状态和数据表中对应的记录保持一致
		//注意Hibernate的隔离级别
	//clear():清理缓存
	
//隔离级别
	//1、READ UNCOMMITED(读未提交)   
	//2、READ COMMITED(读已提交)	
	//4、REPEATABLE READ(可重复读)	 
	//8、SERIALIZEABLE(串行化)
//
 
  2
    默认为4
	
//持久化对象状态
	//持久化状态
	//临时状态
	//游离状态
	//删除状态
	
//游离状态
	//News news = new News();
	//news.setId(1);

//持久化状态
	//News news = (News)session.get(News.class,1);

//对象状态转换图

	get()
	Load()	
	Query.list()
	Query.uniqueResult()
	Query.iterator()	
	Query.scoll()						new 语句
	//持久化状态	<---------------	//临时状态	
		|	^			save()	
		|	|		 saveOrUpdate()	
		|	|			persist()
		|	|			merge()
		|	|
		|	|
evict()	|	| update()
close()	|	| saveOrUpdate()
clear()	|	| merge()
		|	|
		v	|
				   delete()
	//游离状态	 ----------->	//删除状态
		
		
//save()方法
	//临时对象变为持久化对象,并为对象分配ID
	//在save()方法前设置ID无效
	//对于持久化对象的ID不允许修改

//persist()方法:
	//save设置对象ID无效但是不抛出异常,而persist会抛出异常
	
//get()方法:
	//获取一个对象

//get()和load()区别
	//1、执行get方法会立即返回一个对象,而执行load方法,若不使用对象,则不会立即执行查询而返回一个代理对象
	//2、如果数据表中没有对应的记录,get返回null,load,当使用对象时,抛出异常
	//3、load方法可能会抛出懒加载异常
	
//update()方法
	//1、更新持久化对象,不需要显示调用update方法,但事物提交时,会先执行session的flush方法
	//2、更新游离对象时,需要显示调用session中的update方法,可以把游离对象变成持久化对象

//saveOrUpdate()方法
	//游离对象则执行update,临时对象则执行save

//delelte()方法
	//删除对象

//evict()方法
	//从缓存中移除指定的持久化对象
	
//set:映射set类型属性
//inverse:指定由哪一方维护关联关系
//cascade:级联操作,不建议使用,建议手工
//order-by:	排序操作,order-by中存放的是列名

//注意
	//单向一对多
		//插入:单向一对多应该先插入多的一方,在插入一的一方
		//删除:可以直接删除一的一方,直接删除多的一方会有异常,必须在一的一方设置级联删除
 
  
	//双向一对多
		//双向一对多,让一的一方放弃维护关联关系
  
    //设定集合是要将集合初始化,防止发生空指针异常 //一对一 //先保存没有外键的一方 //单向多对多 //注意懒加载异常 //双向多对多 //继承映射 //join-subclass //union-subclas //检索策略 //类级别 //立即检索:立即加载检索方法的指定对象 //延迟检索:延迟加载检索方法的指定对象 //检索方式 //导航对象图检索方式:根据已经加载的对象导航到其他对象 //OID检索方式:按照对象的OID来检索对象 //HQL检索方式:使用面向对象的HQL查询语言 //QBC检索方式:使用QBC API来检索对象 //本地SQL检索方式:使用本地数据库的SQL查询语句 //HQL分页 query.setFirstResult((pageNo-1)*pageSize).setMaxResults(pageSize).list() //HQL命名查询 getNamedQuery(); //常见错误 错误:数据表无法生成 原因:注意检查映射文件的路径,还有Hibernate的方言配置,Hibernate可以自动见表,但是不能自动建数据库
  
 
上一篇:hibernate1
下一篇:动态曲线 Timer.java
网友评论