OHibernate
SQLite Connection for Android. ORM tool for Android devices. First ORM with Geometric-Spatial data support for Android operating systems.
There is relational table support. OneToOne and OneToMany are fully supported. OHQL support for simple inquiries.
Log
v1.0.8 -> Solved single quotes problem.
v1.0.9 -> Folder created automatically.
##Installation
To use the library, first include it your project using Gradle
allprojects {
repositories {
jcenter()
maven {
url "https://jitpack.io"
}
}
}
and:
dependencies {
compile 'com.github.10uroi:OHibernate:1.0.9'
}
##How to use
###Attached into the "MainActivity" class public class MainActivity extends AppCompatActivity {
//I set the database path and the name
public static final String DATABASE_EXTERNAL = Environment.getExternalStorageDirectory().getPath();
//external
public static final String DATABASE_SUB = "/folderName/";
public static final String DATABASE_DB_PATH = DATABASE_EXTERNAL + DATABASE_SUB;
public static final String DATABASE_DATA_NAME = "databaseName.sqlite";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
OHibernateConfig.DB_PATH = DATABASE_DB_PATH; // DATABASE PATH
OHibernateConfig.DB_NAME = DATABASE_DATA_NAME; // DATABASE NAME
}
}
###We are creating the "ExampleBean" class @Entity(TABLE_NAME = "example", TABLE_OPERATION = Entity.TABLE_OPERATION_TYPE.DROP_AND_CREATE) public class ExampleBean {
@Id(PRIMARY_KEY_AUTOINCREMENT = true)
private Integer id;
private String name;
private String surname;
private int age;
@Column(NAME = "active") //column customization
private boolean status;
@Column(DATETIME = true) //column customization
private String datetime;
//GETTER - SETTER
}
###We are creating the "ExampleBeanDAO" class public class ExampleBeanDAO {
//Automatic Transactions
OHibernate<ExampleBean> oHibernate = new OHibernate<>(ExampleBean.class);
public void insert(ExampleBean exampleBean){
try {
oHibernate.insert(exampleBean);
// Returns the id of the object
}
catch (Exception e) {
e.printStackTrace();
Log.e("Error",e.getMessage());
}
}
public void update(ExampleBean exampleBean){
try {
oHibernate.update(exampleBean);
}
catch (Exception e) {
e.printStackTrace();
Log.e("Error",e.getMessage());
}
}
public void delete(ExampleBean exampleBean){
try {
oHibernate.delete(exampleBean);
}
catch (Exception e) {
e.printStackTrace();
Log.e("Error",e.getMessage());
}
}
public ExampleBean select(Integer id){
try {
return (ExampleBean) oHibernate.where("id",id).select();
}
catch (Exception e) {
e.printStackTrace();
Log.e("Error",e.getMessage());
}
return null;
}
public ArrayList<ExampleBean> selectAll(){
try {
return (ArrayList<ExampleBean>) oHibernate.selectAll();
}
catch (Exception e) {
e.printStackTrace();
Log.e("Error",e.getMessage());
}
return null;
}
public ArrayList<ExampleBean> selectAll(String surname){
try {
return (ArrayList<ExampleBean>) oHibernate.where("surname",surname).limit(5).selectAll();
// custom
}
catch (Exception e) {
e.printStackTrace();
Log.e("Error",e.getMessage());
}
return null;
}
public ExampleBean selectCustom(String name,String surname){
try {
return (ExampleBean) oHibernate.where("name",name).and().where("surname",surname, LIKE_TYPE.BOTH).select();
// custom
}
catch (Exception e) {
e.printStackTrace();
Log.e("Error",e.getMessage());
}
return null;
}
}
Relational tables
Example OneToMany
User | Address |
---|---|
@Entity(TABLE_NAME = "users", TABLE_OPERATION = Entity.TABLE_OPERATION_TYPE.CREATE) public class User {
@Id(PRIMARY_KEY_AUTOINCREMENT = true)
private Integer id;
private String firstName;
private String lastName;
@OneToMany(JoinColumn = "user_id", Cascade = CascadeType.ALL, Fetch = FetchType.EAGER)
private ArrayList<Address> addresses;
...
//Getter - Setter
}
</code> </pre> </td> <td style="padding:0; margin:0; border:none; width:50%;">
<pre lang="java"><code class="language-java">@Entity(TABLE_NAME = "addresses",TABLE_OPERATION = Entity.TABLE_OPERATION_TYPE.CREATE) public class Address {
@Id(PRIMARY_KEY_AUTOINCREMENT = true)
private Integer id;
private String county;
@Column(NAME="phone_number")
private Long phoneNumber;
private Integer user_id;
...
//Getter - Setter
}
</code></pre> </td>
|
users | addresses | ||||||
---|---|---|---|---|---|---|---|
id | firstname | lastname | | ||||
1 | Onur | Ciner | ?? | 1 | Ankara | 05554443322 | 1 |
|
OHQL (The OHibernate Query Language)
Single Select
User user = (User) new OQuery() .addEntity(User.class) //=>Returns a String if entity is not added .Select("*") .From("users")
//=> "users"->table name .Where("id",2) .getSingleResult();
//=> Fetch user with id 2 in the users table
List Select
ArrayList<User> users = new OQuery() .addEntity(User.class) //=>Returns a String if entity is not added .Select("*") .From("users")
//=> "users"->table name .list();
//=> Brings all users in the users table
Insert Query
new OQuery() .SetParameter("firstName","Onur") .SetParameter("lastName","Ciner") .Insert("users");
//=> "users"->table name
Insert Entity Query
Users user = new Users();
//=>The object is created user.setFirstName("Onur");
user.setLastName("Ciner");
new OQuery().InsertEntity("users",user);
//=> "users"->table name
Update Query
new OQuery() .SetParameter("firstName", "Selçuk") .SetParameter("lastName", "Uzunsoy") .Where("id", 15)
//=> User with id 15 will be updated .Update("users");
//=> "users"->table name
Update Entity Query
Users user = OQuery().Select...;
//=> Object brought user.setFirstName("Onur");
user.setLastName("Ciner");
new OQuery().UpdateEntity("users",user);
//=> "users"->table name
Delete Query
new OQuery() .Where("id",15) //=> User with id 15 will be deleted .Delete("users");
//=> "users"->table name
DeleteAll Query
new OQuery() .DeleteAll("users");
//=> All users in the users table will be deleted