当前位置:首页>开发>正文

帮忙讲解下面Hibernate注解,初学者 什么是hibernate注解

2023-04-20 02:17:17 互联网 未知 开发

 帮忙讲解下面Hibernate注解,初学者 什么是hibernate注解

帮忙讲解下面Hibernate注解,初学者


1,你这个是用注解的方式标示对象的OID(即数据表主键的映射);
2,@Id代表这个属性是OID;
3,@GenericGenerator,这个标签在声明一个名字叫做generator的id生成器,这个id生成器是用的生成主键的策略是increment,increment就是先查询出数据表最大的id值,然后依次递增;属于hibernate来管理id的生成;
4,@GeneratedValue标签代表这个属性使用hibernate或者数据库的自动生成值策略,这里面,你表示的是OID使用名字叫做generator的生成器来生成,就是你上面使用@GenericGenerator声明的那个生成器;
5,还有一中直接的写法就是@Id@GeneratedValue(strategy=AUTO)等;
你可以看看我个人说明里面的hibernate的资料,希望对你有用。

什么是hibernate注解

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

Hibernate注解

给你两个类,你看一下吧.肯定是放在user类里的,我的例子里面一个是基类,一个是角色类.
在dao中也肯定是user的.
/**
* 实体类 - 基类
*/
@MappedSuperclass
public class BaseEntity implements Serializable {
private String id// ID
private Date createDate// 创建日期
private Date modifyDate// 修改日期

@Id
@Column(length = 32, nullable = true)
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid")
public String getId() {
return id
}

public void setId(String id) {
this.id = id
}

@Column(updatable = false)
public Date getCreateDate() {
return createDate
}

public void setCreateDate(Date createDate) {
this.createDate = createDate
}

public Date getModifyDate() {
return modifyDate
}

public void setModifyDate(Date modifyDate) {
this.modifyDate = modifyDate
}

@Override
public int hashCode() {
return id == null ? System.identityHashCode(this) : id.hashCode()
}

@Override
public boolean equals(Object obj) {
if (this == obj) {
return true
}
if (obj == null) {
return false
}
if (getClass().getPackage() != obj.getClass().getPackage()) {
return false
}
final BaseEntity other = (BaseEntity) obj
if (id == null) {
if (other.getId() != null) {
return false
}
} else if (!id.equals(other.getId())) {
return false
}
return true
}

}
/**
* 实体类 - 角色
*/

@Entity
public class Role extends BaseEntity {

private String name// 角色名称
private String value// 角色标识
private Boolean isAdmin// 是否为管理员角色
private String description// 描述
private Organization organization// 组织

private Set<Admin> adminSet// 管理员
private Set<Resources> resourcesSet// 资源

@Column(nullable = false, unique = true)
public String getName() {
return name
}

public void setName(String name) {
this.name = name
}

@Column(nullable = false, unique = true)
public String getValue() {
return value
}

public void setValue(String value) {
this.value = value
}

@Column(nullable = false, updatable = false)
public Boolean getIsAdmin() {
return isAdmin
}

public void setIsAdmin(Boolean isAdmin) {
this.isAdmin = isAdmin
}

@Column(length = 5000)
public String getDescription() {
return description
}

public void setDescription(String description) {
this.description = description
}

@ManyToMany(fetch = FetchType.LAZY, mappedBy = "roleSet")
public Set<Admin> getAdminSet() {
return adminSet
}

public void setAdminSet(Set<Admin> adminSet) {
this.adminSet = adminSet
}

@ManyToMany(fetch = FetchType.LAZY)
public Set<Resources> getResourcesSet() {
return resourcesSet
}

public void setResourcesSet(Set<Resources> resourcesSet) {
this.resourcesSet = resourcesSet
}

@ManyToOne(fetch = FetchType.LAZY)
public Organization getOrganization() {
return organization
}

public void setOrganization(Organization organization) {
this.organization = organization
}
}

hibernate中常用的注解方式,如@repository,及详解。

@overriide :限定重写父类方法,该注解只能用于方法。
@deprecated:用于表示某个程序元素(类,方法)已过时。
@SupperessWarnings:抑制编译器警告。
@Autowired是根据类型进行自动装配的。在上面的例子中,如果当Spring上下文中存在不止一个UserDao类型
@Qualifier配合@Autowired来解决这些问题。
@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按byName自动注入罢了。@Resource有两个属性是比较重要的,分别是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。
@PostConstruct(JSR-250)
在方法上加上注解@PostConstruct,这个方法就会在Bean初始化之后被Spring容器执行(注:Bean初始化包括,实例化Bean,并装配Bean的属性(依赖注入))。
它的一个典型的应用场景是,当你需要往Bean里注入一个其父类中定义的属性,而你又无法复写父类的属性或属性的setter方法时.
@PreDestroy(JSR-250)
在方法上加上注解@PreDestroy,这个方法就会在Bean初始化之后被Spring容器执行。由于我们当前还没有需要用到它的场景,这里不不去演示。其用法同@PostConstruct。.
使用@Scope来定义Bean的作用范围
在使用XML定义Bean时,我们可能还需要通过bean的scope属性来定义一个Bean的作用范围,我们同样可以通过@Scope注解来完成这项工

这些都应该是spring注解方式 看看是不是你要的 如果是 你就按照spring注解方式去百度上再搜搜 还有很多答案

Hibernate注释问题

@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(length = 32)

hibernate映射关系的注解是什么意思?

@OneToOne(cascqde={CasadeTypeALL})
一对一,级联操作CRUD
@OneToMany(cascqde={CasadeTypeALL})
一对多,级联操作CRUD
@Transient
瞬时属性,不用持久化到数据库

hibernate注解求问

使用@Cache(usage=CacheConcurrencyStrategy.)标签,有5种可选的缓存方案:

  1,CacheConcurrencyStrategy.NONE

  不适用,默认

  2.  CacheConcurrencyStrategy.NONSTRICT_READ_WRITE

  更新不频繁几个小时或更长

  3,CacheConcurrencyStrategy.READ_ONLY

  对于不发生改变的数据使用 [size=large][/size]

  4,CacheConcurrencyStrategy.READ_WRITE

  基于时间戳判定机制,,对于数据同步要求严格的情况,使用频繁

  5,CacheConcurrencyStrategy.TRANSACTIONAL

  运行在jta环境种,基于事务

最新文章