`
文章列表
  多对一 (员工-部门):   多个员工所于同一个部门,一个部门有多个员工,在Hibernate中用代码实现如下:   部门类 (Department.java):   public class Department { private int id ; private String name ; ...getter/setter }   员工类 (Employee.java):     public class Employee { private int id ; ...
  Hibernate中的主要关联关系:   . 多对一   . 一对多   . 一对一   . 多对多   . 集合映射   . 组件映射
  Criteria 查询更像是一种面向对象的查询方式,其没有类似SQL语句的查询语句,如下:   Criteria c = s.createCriteria (User.class); // 类 c.add (Restrictions.eq ("name",name)); // 添加查询条件,此处的eq代表等于,还有大于,小于等,第一个参数代表Java类中的属性,后者则表示传递的值     从上面代码看出,其更像一种面向对象的查询
  如下Query提供的方法可以实现分页:   1. setFirstResult       从第几条开始取记录   2. setMaxResult        一次取多少条记录     使用此方法进行分页,具有可移植性,下面写一段代码:   HibernateUtil.java private static final SessionFactory sessionFactory; static { sessionFactory = new configuration.buildSessoinFactory(); //如 ...

HQL的命名参数

  如下:   ...... String hql = "from user where name=? and sex=? and ...."; Query q = s.createQuery (hql); q.setString (0,name); q.setString (1,sex); ......   从上段代码可看出,如果where后面的参数过多,在进行匹配的时候容易混淆,所以产生了HQL的命名参数,如下: ...... String hql = "from user where name = :name and ...
        在Hibernate中有一个类名为user,所以在进行关系映射生成表的时候会再数据库中建立一个名为user的表,但是在oracle数据库中,user是关键字,故会发生冲突,如下:        ...        <class name="user" table="user">                                  <id name="id">                         <generator class="nativ ...
以前写代码,总免不了编写登陆部分。在获取user的时候,只可能返回一个user实例,或者为null。以前使用以下方法实现。   Java代码 public User get(String id){        Session session=HibernateUtil.getSessionFactory().openSession();        String hql="from User u where u.id = ?";        List list=session.createQuery(hql).setString(0 ...

HQL和Criteria

  1.  HQL是对象的查询语言,不同于SQL,HQL区分大小写,HQL查的是对象而不是表,HQL主要通过Query来操作:        Query q = session.createQuery (hql);      。 from Persion;      。 from User user where user.name = :name;      。 from User user where user.name = :name and user.birthday < :birthday;   2. Criteria也是一个面向对象的查询语言,创建方式如下:   ...
  对象一般分为3中状态:   1. 瞬时状态(transient):数据库中没有与之对应的值,超过作用域被JVM回收,一般是new出来且与session无关的对象   2. 持久状态(persistent):数据库中有鱼之对应的值,当与session有关联,并且当前的session没有关闭,事务没有提交;持久状态发生变化,在事务提交时会影响数据库(Hibernate能检测到)   3. 托管状态(detached):数据库中有与之对应的值,但当前没有session与之有关联;托管对象发生改变,Hibernate不能检测到
  Session中的几个主要方法:   1. save,persist保存数据,persist在事务外不会产生insert一句   2. delete删除对象   3. update更像对象,如果数据库中没有数据,则抛出异常   4. get根据ID查询,会立刻访问数据库   5. load根据ID查询,返回代理,不会立即访问数据库   6. saveOrUpdate,merge根据ID和version的值确定是save还是update   7. lock把对象变为持久对象,但不会同步对象的状态
     Hibernate中有两个极为相似的方法get()与load(),他们都可以通过指定的实体类与ID从数据库中读取数据,并返回对应的实例,它们间的不同在于:      1. get是直接查询数据库,如果查不到就返回null,Load会首先从内存中装 ...
  Hibernate中的Session与JSP中的四个作用范围之一的Session不同。   Hibernate中的Session是Hibernate中核心,它负责Hibernate所有操作数据的部分,比如:save、update方法等。   jsp中的session是一个可以理解为会话级的存储变量,是web间信息互访的载体,而Hibernate中的session一个全新的概念,可以理解为数据库层和持久化层的互访载体,也可以认为是一个缓冲器,对数据库的所有CURD操作在这个session(缓存)中都有记录,一旦做个清理缓存操作,则所有对持久化对象的操作都将映射到具体的某个数据库中,完 ...
在使用Hibernate中,都需要如下操作:   1. 知道Hibernate配置    Configuration config = new Configuration().configure() ;   2. 从配置中取得SessionFactory    SessionFactory factory = config.buildSessionFactory() ;   3. 从SessionFactory中取得一个session    this.session = factory.openSession() ;         一般调用Hibernate都需要这些步骤,如 ...
(1)Ctrl+M切换窗口的大小(2)Ctrl+Q跳到最后一次的编辑处(3)F2当鼠标放在一个标记处出现Tooltip时候按F2则把鼠标移开时Tooltip还会显示即Show Tooltip Description。          F3跳到声明或定义的地方。          F5单步调试进入函数内部。          F6
如果是eclipse的 .提示功能没有了,照下边这样设置 window->Preferences->Java->Editor->ContentAssist->Advanced   上面的选项卡Select the proposal kinds contained in the'default' content assist list: 中把 Other Java Proposals 选项打上勾就可以了。 如果是想通过输入其他字母也达到输入点后的效果,看下面文章: 怎么设置使MyEclipse的代码提示功能一样能像Microsoft Visual Studio的 ...
Global site tag (gtag.js) - Google Analytics