当前位置: 首页 > 面试题库 >

您何时在Objectify for GAE中注册类?

贾飞章
2023-03-14
问题内容

因此,这可能是一个愚蠢的问题,但是何时使用以下方法注册课程:

ObjectifyService.register( User.class );

当前,我正在类似接口的类的构造函数中执行此操作,该类在其他类中用于简化数据存储对我的应用程序的使用。但是,我收到此错误:

尝试两次注册种类“用户”

所以,我想我的问题是,您多久在一次Objective中注册类?

谢谢!

PS这是我的整个课程:

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Iterator;

import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.persistence.Id;

import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyService;
import com.googlecode.objectify.annotation.Indexed;
import com.googlecode.objectify.annotation.Unindexed;

public class UsersService {

    Objectify ojy;

    public UsersService(){
        ObjectifyService.register( User.class );
        ojy = ObjectifyService.begin();
    }

    public void regUser(String email, String password, String firstName, String lastName){
        //TODO: Check syntax if email
        //TODO: store encrypted password
    }

    public void regUser(String email, String password, String firstName){
        regUser(email, password, firstName, null);
    }

    public void regUser(String email, String password){
        regUser(email, password, "", "");
    }

    public boolean checkFor(Long acc_id){
        User checked_user = ojy.find(User.class, acc_id);
        if(checked_user == null){
            return false;
        }else{
            return true;
        }
    }

    public User getUser(String email, String password) throws InvalidKeyException, IllegalBlockSizeException, BadPaddingException, NoSuchAlgorithmException, NoSuchPaddingException{
        String pass_enc = MyUtils.getEncrypted(password);
        Iterable<User> users = ojy.query(User.class).filter("email", email).filter("password", pass_enc);
        Iterator<User> iter = users.iterator();
        if(iter.hasNext()){
            return iter.next();
        }else{
            return null;
        }
    }

}

问题答案:

更新资料

这是最佳实践解决方案:

使用您自己的服务,这可以确保在使用Objectify之前已注册您的实体,但对于未访问数据存储区的请求,并不一定会影响应用程序的启动。

import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyFactory;
import com.googlecode.objectify.ObjectifyService;


public class OfyService {
    static {
        ObjectifyService.register(User.class);
    }

    public static Objectify ofy() {
        return ObjectifyService.begin();//prior to v.4.0 use .begin() , 
                                        //since v.4.0  use ObjectifyService.ofy();
    }

    public static ObjectifyFactory factory() {
        return ObjectifyService.factory();
    }

}

然后像这样使用它:

public User createUser(User pUser) {

    Objectify objectify = OfyService.ofy();
    objectify.put(pUser);

    return pUser;
}

原始答案(最好使用上面的代码):

您应该在您的类中以这种方式进行操作,只需将如下所示的静态块放入:

static{
    ObjectifyService.register( User.class );
}

ps,您也看一下对象化的最佳实践

http://code.google.com/p/objectify-
appengine/wiki/BestPractices



 类似资料:
  • 我想设置一个由多个步骤组成的用户注册。每个步骤将以条的形式突出显示。深灰色条将是完成的步骤,浅灰色条将是需要完成的步骤。似乎想不出这样做的方法。请建议。 我们可以在myfitnesspal注册中看到这一点。我在下图的红色框中突出显示了这一点。

  • Step1 使用手机号注册账户 访问http://www.supermapol.com,点击右上角的“注册按钮”进入SuperMap的用户注册页面。如下图所示,依次输入您的用户名、密码,手机号等信息,获取并输入验证码后点击“注册”按钮。 注册成功后,您将看到如下页面,选择完善个人信息按钮对您的账户进行进一步的完善。 Step2 完善个人信息 选择完善个人信息,则会弹出如下页面。您可以在该页面修改您

  • 问题内容: 如何在Swift中使用(以前)? 这是我尝试复制的一个Objective-C示例: 但是,Swift似乎没有,这(似乎)意味着我无法在未实现的方法上调用方法。 我已经在Swift中尝试了基于对象的版本,但似乎使Playground崩溃了: 但是它似乎崩溃了,即使我的对象接受了一个类型的参数 在Swift中执行此操作的最佳方法是什么?有没有一种方法可以避免通过基于对象的注册发送不必要的对

  • 我的注册成功。将向邮件发送通知,其中包含有关跟踪链接的请求的文本,然后激活帐户。一切都很好,但不可能将此文本转换为模板,以便将变量存储在其中,并将其发送到邮局,但我不知道如何从java代码中放置thymeleaf 使用者getUsername()用户。getActivationCode() 在我的例子中,它们以相同的形式返回,它们不会给出它们对应的用户的值 我的胸腺 我正在尝试通过上下文读取此文件

  • 我什么时候应该使用取消注册接收器?在、或中? 注意:我需要在后台运行该服务。 更新: > 我得到一个异常释放接收器。 活动已泄露意图接收器您是否错过了对 如果有问题,请告诉我,这是我的代码:

  • 我试图在运行时动态创建POJO类并将它们映射到Hibernate。但是,我在第二部分失败了。 生成类文件后,我将其放置在Hibernate扫描POJO的位置。但它不起作用。 我再次尝试重建会话工厂,以便它可以接收新创建的文件,但这不起作用。重建会话工厂也不是一个好的/可扩展的解决方案。 Hibernate设置代码: 错误: