25 Ekim 2018 Perşembe

JDBC Blob Arayüzü

Giriş
Açıklaması şöyle.
A Blob object in Java is a mapping of Blob (Binary large object ) in Sql.
Methods in ResultSet, CallableStatement and PreparedStatement can be used on Blob objects.
JDBC API allows Blob to be used in the same way as an int with methods like getBlob and setBlob (same as getInt and setInt).
Blob bir arayüzdür. Bu arayüzü gerçekleştiren tek bir sınıf var. O da  SerialBlob sınıfı.

Blob içindeki veriye byte array veya InputStream olarak erişmemize izin verir.

Açıklaması şöyle.
There are certain restrictions on Blob:
 -Equality (or nonequality) operator can't be used
 -OrderBy, Distinct and GroupBy cannot be used.

Storing an integer in Blob would therefore be not recommended.
constructor
Şöyle yaparız.
Blob blob = conn.createBlob();
constructor - byte []
Byte ile şöyle yaratırız.
Blob blob = new javax.sql.rowset.serial.SerialBlob (bytes);
setBytes metodu
Şöyle yaparız.
byte[] bytes = ;
blob.setBytes (1, bytes);

JPA @CollectionTable Anotasyonu

Giriş
@ElementCollection ile birlikte kullanılır. JoinColumn alanındaki name alanı parent'ın primary key sütunudur. referencedColumnName alanı ise Child'ın foreign key sütunudur.

name alanı
Şöyle yaparız.
@ElementCollection
@CollectionTable(
  name = "SHIRT_COLORS",
  joinColumns=@JoinColumn(name = "id", referencedColumnName = "id")
)
@Column(name="color")
private List<String> colors = new ArrayList<String>();
uniqueConstraints Alanı
Örnek
Şöyle yaparız.
@ElementCollection
@CollectionTable(name = "product_reviews", 
       uniqueConstraints = {@UnqiqueConstraint(columnNames={"product_id", "author_id"})})
public List<Review> getReviews() {
    return reviews;
}

23 Ekim 2018 Salı

Apache Commons ToStringBuilder Sınıfı

Giriş
Şu satırı dahil ederiz
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
Bu sınıfı ToStringStyle.SHORT_PREFIX_STYLE ile kullanmak hoşuma gidiyor.

constructor - Object + ToStringStyle
Şöyle yaparız.
ReflectionToStringBuilder builder = new ReflectionToStringBuilder(
  this, ToStringStyle.SHORT_PREFIX_STYLE);
accept metodu
Metodu override etmek gerekir. Şöyle yaparız.
@Override
protected boolean accept(Field field) {
  return !field.getName().equals("data");
}
reflectionToString metodu - Object
Açıklaması şöyle.
Alternatively, there is a method that uses reflection to determine the fields to test. Because these fields are usually private, the method, reflectionToString, uses AccessibleObject.setAccessible to change the visibility of the fields. This will fail under a security manager, unless the appropriate permissions are set up correctly. It is also slower than testing explicitly. 
Şöyle yaparız.
public String toString() {
  return ToStringBuilder.reflectionToString(this);
}
reflectionToString metodu - Object + ToStringStyle
Örnek
Şöyle yaparız.
public class Address {

  private String addressKey;
  private String postalCode;
  private String country;
  ...

  @Override
  public String toString() {
    return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE,
     false);
  }
}
setDefaultStyle metodu
Şöyle yaparız.
builder.setDefaultStyle(style);
toString metodu
Örnek
Şöyle yaparız.
@Override
public String toString() {
  return new org.apache.commons.lang3.builder.ToStringBuilder(this).
    append("field1", field1).
    append("field2", field2).
    toString();
}
toStringExclude metodu
Şöyle yaparız.
@Override
public String toString() {
  return ReflectionToStringBuilder.toStringExclude(this, "data");
}