Content you want the user to see goes here.

Kamis, 23 Juli 2015

Perbedaan Equal Operator(==) dengan Strict Equal Operator(===)

Hallo semua, kali ini mpu-nya mau share dan buat catatan untuk mencegah kekhilafan dalam membedakan antara Equal Operator (==) dengan Strict Equal Operator (===)

Equal Operator (==)

Merupakan operator yang membandingkan dua nilai tanpa harus membandingkan pula tipe data dari nilai tersebut dan nilai balikannya adalah boolean. Misalkan nilai (string)a = 5 dan nilai (integer)b = 5 maka nilainya akan TRUE.

Strict Equal Operator/Identical (===)

Merupakan operator yang membandingkan dua nilai yang juga melihat tipe data dari nilai tersebut dan nilai balikannya juga sama yaitu boolean. Misalkan nilai (string)a = 5 dan nilai (integer)b = 5 maka nilainya akan FALSE

Biar lebih jelas mpu-nya buat dalam format tabel sederhananya

a = 7; (Integer)
b = 5; (Integer)
c = '7'; (String)
c = 07; (Integer)
Kasus Nilai
a == b FALSE
a == c TRUE
a == d TRUE
a === b FALSE
a === c FALSE
a === d FALSE

Operator seperti ini (==) biasanya dipergunakan programmer untuk meminimalisir error/bugs dalam pemrograman sampai pada akhirnya muncul deh tuh error/bugs dengan sendirinya dikarenakan kurang semangatnya programmer dalam memilih operator yang tepat ( ^_^")
Biar lebih semangat coba yang ini (===) ヽ(´ー`)ノ kim*chi

Sekian penjabaran dari mpu-nya blog semoga bermanfaat meskipun sedikit ilmu tersebut ^_^

Selasa, 14 Juli 2015

Hallo hallo semua, mpu-nya mau share tentang spesifikasi android keluaran negri tirai bambu nih, yaitu Xiaomi Redmi 2 (2014817)



Spesifikasi :

Menggunakan Antutu Benchmark v5.7.1








Dari data screen shot diatas terbilang cukup untuk kelas2 smartphone era sekarang, dan yang bikin mpu-nya sempet gak percaya yaitu multi touchnya bisa sampai 10 jari, Amazing...

Sekian kilas info tentang gadget dari negri tirai bambu ini, wassalam

Senin, 13 Juli 2015

Membuat CRUD Menggunakan Spring Hibernate Dengan MySQL

Hallo, kali ini mpu-nya mau coba share ilmu lagi dengan bahasa pemrograman JAVA menggunakan Spring Hibernate sambil iseng2 maenin java lagi, Langsung aja :

Sebelum masuk ke langkah pembuatan kodenya, buat settingan project seperti gambar berikut:


Untuk aplikasi yang mpu-nya buat susunan folder project-nya src/main/java/spring_jdbc Pertama buat terlebih dahulu main class aplikasinya, buat class Application.java
package spring_jdbc;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }

}

Kedua buat class database config-nya dengan nama file DBConfig.java, susunan folder project-nya src/main/java/spring_jdbc/config
package spring_jdbc.config;

import java.util.Properties;
import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
public class DBConfig {

  @Value("${db.driver}")
  private String DB_DRIVER;
  
  @Value("${db.password}")
  private String DB_PASSWORD;
  
  @Value("${db.url}")
  private String DB_URL;
  
  @Value("${db.username}")
  private String DB_USERNAME;

  @Value("${hibernate.dialect}")
  private String HIBERNATE_DIALECT;
  
  @Value("${hibernate.show_sql}")
  private String HIBERNATE_SHOW_SQL;
  
  @Value("${hibernate.hbm2ddl.auto}")
  private String HIBERNATE_HBM2DDL_AUTO;

  @Value("${entitymanager.packagesToScan}")
  private String ENTITYMANAGER_PACKAGES_TO_SCAN;
  
  @Bean
  public DataSource dataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName(DB_DRIVER);
    dataSource.setUrl(DB_URL);
    dataSource.setUsername(DB_USERNAME);
    dataSource.setPassword(DB_PASSWORD);
    return dataSource;
  }

  @Bean
  public LocalSessionFactoryBean sessionFactory() {
    LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
    sessionFactoryBean.setDataSource(dataSource());
    sessionFactoryBean.setPackagesToScan(ENTITYMANAGER_PACKAGES_TO_SCAN);
    Properties hibernateProperties = new Properties();
    hibernateProperties.put("hibernate.dialect", HIBERNATE_DIALECT);
    hibernateProperties.put("hibernate.show_sql", HIBERNATE_SHOW_SQL);
    hibernateProperties.put("hibernate.hbm2ddl.auto", HIBERNATE_HBM2DDL_AUTO);
    sessionFactoryBean.setHibernateProperties(hibernateProperties);
    
    return sessionFactoryBean;
  }

  @Bean
  public HibernateTransactionManager transactionManager() {
    HibernateTransactionManager transactionManager = new HibernateTransactionManager();
    transactionManager.setSessionFactory(sessionFactory().getObject());
    return transactionManager;
  }

}

Ketiga setting file application.properties untuk koneksi database-nya, di src/main/resources
# Database
db.driver: com.mysql.jdbc.Driver
db.url: jdbc:mysql://(url_apps):(port_mysql)/nama_database
db.username: username
db.password: password

# Hibernate
hibernate.dialect: org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql: true
hibernate.hbm2ddl.auto: update
entitymanager.packagesToScan: (package_main_aplikasi)

Keempat buat Controller dengan nama file UserController.java, susunan folder project-nya src/main/java/spring_jdbc/controller
package spring_jdbc.controller;

import spring_jdbc.model.User;
import spring_jdbc.model.UserDao;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/*
 * buat mapping pemanggilan url untuk controller
 */
@Controller
@RequestMapping(value="/user")
public class UserController {

  @Autowired
  protected UserDao _userDao;
  
  /*
   * mapping ini berfungsi untuk pemanggilan url
   * pada aksi insert/create data kedalam table
   */
  @RequestMapping(value="/save")
  @ResponseBody
  public String create(String email, String name) {
    try {
     User user = new User(email, name);
     _userDao.save(user);
    }
    catch(Exception ex) {
      return ex.getMessage();
    }
    return "User succesfully saved!";
  }
  
  /*
   * mapping ini berfungsi untuk pemanggilan url
   * pada aksi delete data di table
   */
  @RequestMapping(value="/delete")
  @ResponseBody
  public String delete(long id) {
    try {
      User user = new User(id);
      _userDao.delete(user);
    }
    catch(Exception ex) {
      return ex.getMessage();
    }
    return "User succesfully deleted!";
  }
  
  /*
   * mapping ini berfungsi untuk pemanggilan url
   * pada aksi update data di table
   */
  @RequestMapping(value="/update")
  @ResponseBody
  public String update(long id, String email, String name) {
   try {
    _userDao.update(id, email, name);
    return "Update succesfully";
   }
   catch(Exception ex) {
    return ex.getMessage();
   }
  }
  
  /*
   * mapping ini berfungsi untuk pemanggilan url
   * pada aksi pencarian data ID berdasarkan email
   * yang di inputkan
   */
  @RequestMapping(value="/get-by-email")
  @ResponseBody
  public String getByEmail(String email) {
    String userId = null;
    try {
     User user = _userDao.getByEmail(email);
        userId = String.valueOf(user.getId());
    }
    catch(Exception ex) {
     return ex.getMessage();
    }
    return "The user id is: "+userId;
  }
  
  /*
   * mapping ini berfungsi untuk pemanggilan url
   * pada aksi pencarian data ID berdasarkan email
   * yang di inputkan dan nilai pengembaliannya berupa json
   */
  @SuppressWarnings("unchecked")
  @RequestMapping(value="/get-by-mail")
  @ResponseBody
  public List<User> getByMail(String email) {
   try {
    return (List<User>) _userDao.getByMail(email);
   }
   catch(Exception ex) {
    return (List<User>) ex;
   }
  }
  
  /*
   * mapping ini berfungsi untuk pemanggilan url
   * pada aksi pencarian data secara keseluruhan
   * dan nilai pengembaliannya berupa json
   */
  @SuppressWarnings("unchecked")
  @RequestMapping(value="/get-all")
  @ResponseBody
  public List<User> getAll(String id) {
   try {
    return _userDao.getAll();
   }
   catch(Exception e) {
    return (List<User>) e;
   }
  }

  /*
   * mapping ini berfungsi untuk pemanggilan url
   * pada aksi pencarian data secara keseluruhan
   * tanpa menggunakan tanda (?) dalam pemanggilan
   * variabel-nya dan nilai pengembaliannya berupa json
   */
  @SuppressWarnings("unchecked")
  @RequestMapping(value="/get_by_mail/{email:.+}", method=RequestMethod.GET)
  @ResponseBody
  public List<User> getByGender(@PathVariable("email") String email, ModelMap model) {
   try {
    return (List<User>) _userDao.getByMail(email);
   }
   catch(Exception ex) {
    return (List<User>) ex;
   }
  }
  
}

Kelima buat file User.java dan UserDao.java, susunan folder project-nya src/main/java/spring_jdbc/model.
file User.java berfungsi untuk men-set variabel2 yang akan di panggil oleh file UserDao.java. berikut file User.java
package spring_jdbc.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

@Entity
@Table(name="customer")
public class User {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private long id;
  
  @NotNull
  @Size(min = 3, max = 80)
  private String email;
  
  @NotNull
  @Size(min = 2, max = 80)
  private String name;

  protected User() { }
  
  /*
   * buat method User dengan attribute hanya ID
   * berfungsi untuk pencarian atau menampilkan informasi
   * berdasarkan ID saja
   */
  public User(long id) { 
    this.id = id;
  }

  /* 
   * buat method User dengan attribute selain ID
   * berfungsi untuk input data
   */
  public User(String email, String name) {
 this.email = email;
    this.name = name;
  }

  /*
   * buat method id, kemudian buat method pemanggilannya
   * yang mana nilai method-nya akan di kembalikan ke method pemanggilnya
   */
  public void setId(long id) {
    this.id = id;
  }
  public long getId() {
    return id;
  }

  /*
   * buat method email, kemudian buat method pemanggilannya
   * yang mana nilai method-nya akan di kembalikan ke method pemanggilnya
   */
  public void setEmail(String email) {
    this.email = email;
  }
  public String getEmail() {
    return email;
  }
  
  /*
   * buat method name, kemudian buat method pemanggilannya
   * yang mana nilai method-nya akan di kembalikan ke method pemanggilnya
   */
  public void setName(String name) {
    this.name = name;
  }
  public String getName() {
    return name;
  }
  
}
berikut file UserDao.java
package spring_jdbc.model;

import java.util.List;
import javax.transaction.Transactional;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
@Transactional
public class UserDao {
  
  @Autowired
  private SessionFactory _sessionFactory;
  
  private Session getSession() {
    return _sessionFactory.getCurrentSession();
  }

  /*
   * menyimpan data berdasarkan id
   */
  public void save(User user) {
    getSession().save(user);
    return;
  }
  
  /*
   * menghapus data berdasarkan id
   */
  public void delete(User user) {
    getSession().delete(user);
    return;
  }
  
  /*
   * mengupdate data berdasarkan id
   */
  public void update(long id, String email, String name) {
    getSession().createQuery("UPDATE User SET email=:byEmail, name=:byName WHERE id=:byId")
     .setParameter("byEmail", email)
     .setParameter("byName", name)
     .setParameter("byId", id)
     .executeUpdate();
  //getSession().update(user);
    return;
  }
  
  /*
   * menampilkan data berdasarkan email yang dimasukkan
   * dan mengembalikan nilainya berupa string
   */
  public User getByEmail(String email) {
    return (User) getSession()
      .createQuery("select b from User b where email = :byEmail")
      .setParameter("byEmail", email)
      .uniqueResult();
  }
  
  /*
   * menampilkan data berdasarkan email yang dimasukkan
   * dan mengembalikan nilainya berupa json
   */
  @SuppressWarnings("unchecked")
  public List<User> getByMail(String email) {
   return getSession()
       .createQuery("select b from User b where email = :byEmail")
       .setParameter("byEmail", email)
       .list();
  }
  
  /*
   * menampilkan data secara keseluruhan dan
   * mengembalikan nilainya berupa json
   */
  @SuppressWarnings("unchecked")
  public List<User> getAll() {
    return getSession().createQuery("from User").list();
  }
  
}

Setelah selesai membuat file2 diatas, langkah selanjutnya ketikan url berikut untuk membuat data. Jangan lupa di mysql-nya buat database-nya terlebih dahulu.
http://localhost:8080/user/save?email=chocolate@gmail.com&name=cocolatos (insert)
http://localhost:8080/user/update?id=1&email=change@gmail.com&name=strawberry (update)
http://localhost:8080/user/delete?id=1 (delete)
http://localhost:8080/user/get-all (select)
http://localhost:8080/user/get-by-mail?email=(nama_email) (select)
http://localhost:8080/user/get_by_mail/(nama_email) (select)
* (http://localhost:8080/) tergantung setting tomcat masing2

Sekian share yang mpu-nya kasih, semoga bermanfaat ^_^