标签: fetching-strategy

关于hibernate中的fetch策略和fetchtype与fetchmode的关系的一些查询?

我已经通过net上的hibernate获取策略的一些链接.我喜欢的一个简短而简洁的链接是 http://www.mkyong.com/hibernate/hibernate-fetching-strategies-examples/.我们有四种类型的获取策略.这些是 :-

  1. fetch-"join"=禁用延迟加载,始终加载所有集合和实体.
  2. fetch-"select"(默认)=延迟加载所有集合和实体.
  3. batch-size ="N"=提取到'N'个集合或实体,不记录.
  4. fetch-"subselect"=将其集合分组为子选择语句.

我的第一个问题是上述哪一个符合eager或lazyloading fetch类型的资格?

为了提出我对hibernate获取策略的疑问,我正在考虑在我的Department类中的下面的代码片段

  @OneToMany(mappedBy = "department", cascade = CascadeType.ALL, fetch = FetchType.EAGER,      orphanRemoval = true)
 @Fetch(value = FetchMode.SELECT)
 @BatchSize(size = 10)
 private Set<EmployeeData> employees = new HashSet<EmployeeData>();
Run Code Online (Sandbox Code Playgroud)

根据我的理解,一旦我提到fetchtype为eager,我只留下了连接获取策略但是当我提到fetchtype作为lazyloading时,我还有其他三个选项,即select,batch-size和subselect.同意?现在,如果我在我的遗留项目中查看代码片段,它会将提取类型称为渴望和获取策略,因为select会相互冲突.对?

另一个问题是在编写FetchMode时看不到批量大小选项.虽然我看到其他三种获取策略,但是在eclipse中控制+空间?

java hibernate fetching-strategy

5
推荐指数
1
解决办法
8325
查看次数

即使浏览器Chrome中的php文件执行正常,Android登录时json对象也为空

跟着我的课程

 public class fetchUserDataAsyncTask extends AsyncTask<Void, Void, User> {
    User user;
    GetUserCallback userCallBack;

    public fetchUserDataAsyncTask(User user, GetUserCallback userCallBack) {
        this.user = user;
        this.userCallBack = userCallBack;
    }

    @Override
    protected User doInBackground(Void... params) {
        ArrayList<NameValuePair> dataToSend = new ArrayList<>();
        dataToSend.add(new BasicNameValuePair("username", user.username));
        dataToSend.add(new BasicNameValuePair("password", user.password));

        HttpParams httpRequestParams = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpRequestParams,
                CONNECTION_TIMEOUT);
        HttpConnectionParams.setSoTimeout(httpRequestParams,
                CONNECTION_TIMEOUT);

        HttpClient client = new DefaultHttpClient(httpRequestParams);
        HttpPost post = new HttpPost(SERVER_ADDRESS
                + "FetchUserData.php");

        User returnedUser = null;

        try {
            post.setEntity(new UrlEncodedFormEntity(dataToSend));
            HttpResponse httpResponse = client.execute(post);

            HttpEntity entity = httpResponse.getEntity(); …
Run Code Online (Sandbox Code Playgroud)

php android json mysqli fetching-strategy

5
推荐指数
1
解决办法
150
查看次数

忽略了标准中的Hibernate提取

我有一些类User与LoginSession类有一对多的关系(我的User类中有一个LoginSessions集合).

@Entity(name="T_User")
public class User() 
{
   ....
     @OneToMany(fetch=FetchType.LAZY, mappedBy="user", cascade=CascadeType.ALL)
     @Fetch(FetchMode.SELECT)
     @JsonIgnore
     private Set<LoginSession> userLoginSession;
   ....
 }
Run Code Online (Sandbox Code Playgroud)

这是LoginSession类:

@Entity(name="T_LoginSession")
public class LoginSession extends BasicDTO
{

    @ManyToOne
    @JoinColumn(name="userId")  
    protected User user;
    ...
Run Code Online (Sandbox Code Playgroud)

我有这个标准:

Criteria crit = session.createCriteria(User.class);
crit.setFetchMode("loginSession", FetchMode.JOIN);
crit.createAlias("userLoginSession", "session");
crit.add(Restrictions.eq("session.token", sessionToken));
crit.setMaxResults(1);
crit.setFirstResult(0);
crit.setFetchSize(1);
Run Code Online (Sandbox Code Playgroud)

问题是提取始终是懒惰的.如何让它成为Eager(通过标准而不是通过属性注释)?

注意:
如果我在@Fetch注释private Set<LoginSession> userLoginSession中设置的响应提取之上添加注释(我不会按标准自定义setFetchMode).

字段的名称(方法的第一个参数setFetchMode)是否正确?

问题: 这个错误与我的问题有关吗?

java hibernate fetching-strategy

2
推荐指数
1
解决办法
4326
查看次数

CascadeType与FetchType

我想现在Hibernate中CascadeType和FetchType有什么区别?

它们看起来非常相似,但我想它们不可互换,对吧?什么时候使用它们?它们可以同时使用吗?

java hibernate jpa cascading fetching-strategy

1
推荐指数
1
解决办法
3754
查看次数

标签 统计

fetching-strategy ×4

hibernate ×3

java ×3

android ×1

cascading ×1

jpa ×1

json ×1

mysqli ×1

php ×1