All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.ebean.bean.ObjectGraphOrigin Maven / Gradle / Ivy

There is a newer version: 15.8.0
Show newest version
package io.ebean.bean;

import java.io.Serializable;

/**
 * Represents a "origin" of an ORM object graph. This combines the call stack
 * and query plan hash.
 * 

* The call stack is included so that the query can have different tuned fetches * for each unique call stack. For example, a query to fetch a customer could be * called by three different methods and each can be treated as a separate * origin point (and autoTune can tune each one separately). *

*/ public final class ObjectGraphOrigin implements Serializable { private static final long serialVersionUID = 410937765287968708L; private final CallOrigin callOrigin; private final String beanType; private final int queryHash; private final String key; public ObjectGraphOrigin(int queryHash, CallOrigin callOrigin, String beanType) { this.callOrigin = callOrigin; this.beanType = beanType; this.queryHash = queryHash; this.key = callOrigin.key(queryHash); } /** * The key includes the queryPlan hash and the callStack hash. This becomes * the unique identifier for a query point. */ public String key() { return key; } /** * The type of bean the query is fetching. */ public String beanType() { return beanType; } /** * The call stack involved. */ public CallOrigin callOrigin() { return callOrigin; } public String top() { return callOrigin.top(); } @Override public String toString() { return "key[" + key + "] type[" + beanType + "] " + callOrigin.top(); } @Override public int hashCode() { int hc = 92821 * callOrigin.hashCode(); hc = 92821 * hc + beanType.hashCode(); hc = 92821 * hc + queryHash; return hc; } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (!(obj instanceof ObjectGraphOrigin)) { return false; } ObjectGraphOrigin e = (ObjectGraphOrigin) obj; return e.queryHash == queryHash && e.beanType.equals(beanType) && e.callOrigin.equals(callOrigin); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy