Hibernate学习手记

1. 实体类:
1). Hibernate可以访问实体类的所有public, protected and private的属性和方法.
2). 实体类的Id的setter应设置为private,因为Id是不需要手动操作的.
3). 实体类的无参构造器是必需的,Hibernate反射的时候要用其来实例化对象.

2. Hibernate annotation与JPA
1).JPA是j2ee5规范的一部分,有自己的标准规范,并被主要的ORM支持,如Hibernate, TopLink
2).Hibernate annotaion比JAP多了许多功能,是JPA的增强版
3).一般情况下我们使用JPA,一些特殊的功能才需要Hibernate annotation.这样有好的扩展性,也易于学习掌握。

3.配置Hibernate
1) 如果使用了annotation,一定需要hibernateAnnocation.jar,
new  AnnotationConfiguration().configure().buildSessionFactory()

//使用此方法,会报An AnnotationConfiguration instance is required to use <mapping class=
new Configuration().configure().buildSessionFactory()

2).Hibernate可以独立于容器运行
3). Hibernate的连接池配置: http://flynndang.iteye.com/admin/blogs/423147
4) Schema与catalog区别: http://luckybat.iteye.com/blog/259976
5) Hibernate缓存配置: http://flynndang.iteye.com/admin/blogs/423295
6) Hibernate事务管理: http://flynndang.iteye.com/admin/blogs/423392

4.Hibernate的关联:
1). 将1:n或者m:n中的集合用set来表示,避免重复的元素.
1).关联的防御式编程,避免集合的混乱:
将集合的getter/setter设置为protected,同时设置pulic的add/remove
    private Set<Event> events;
    protected Set<Event> getEvents() {
        return events;
    }
    protected void setEvents(Set<Event> events) {
        this.events = events;
    }
    
    public void addToEvent(Event event) {
        this.getEvents().add(event);
    }
    
    public void removeFromEvent(Event event) {
        this.getEvents().remove(event);
    }


你可能感兴趣的:(Hibernate,orm,jpa)