හොඳයි! ඔන්න කලින් lesson එකෙන් promise උනා වගේ අද lesson එක කරන්නේ Hibernate ගැන. 
මුලින්ම බලමු Hibernate කියන්නේ මොකද්ද කියලා.
** Hibernate කියන්නේ Framework එකක්.
** දැනට තියෙන හොඳම object/relational persistence (ORM) tool එකක් කිව්වොත් හරියටම හරි.
** java වලට වගේම .net වලටත් මේ වෙනකොට Hibernate support කරනවා.
ඉතිං දැං ඔය .net පොරවල් ටිකත් මේ පැත්තේ ආවට කාරියක් නෑ ඕං!
** මේක හරිම smooth බොලව්! relational database handling මාරම විදියට simplify කරලා තියෙන්නේ. ඒ වගේම හරිම elegant ඇන්ඩ් innovative.
කරගෙන යද්දී බොලාටම තේරෙයි! ඔන්න හැඳින්වීම ඉවරයි. අපි කරන්න යන්නේ Hibernate3.
** Web developing වලට Hibernate ඕනේම කියලා එකක් නෑ.
නමුත් හැමදාම SQL කොට කොට ඉන්නවට වඩා අළුත් දෙයක් ඉගෙන ගන්න එක හොඳා.....යි!
අහ්! තව එකක්, Hibernate කියන්නේ Web developing වලට විතරක් use වෙන framework එකක් නෙමෙයි.
Desktop application development, Middle-ware development මෙකී නොකී සියලූම database එකක් connect වෙන development "හු" යන්නවල් වලට use කරගන්න පුලුවන්.
ඔන්න වැඩේට බැස්සා.
වෙනසකටත් එක්ක Desktop application එකක් use කරගෙන මේක කරගෙන යමු.
නෑ නෑ!
වෙනසක් ඇත්තෙම නෑ! මේක මේ විදියටම Web application එකකත් use කරන්න පුළුවන් බොලව්.
1 - Database schema එක හදා ගමු!
මතක ඇතිනේ කලින් lesson එකක මේක අපි කලා? MySQL admin open කලා, අළුතෙන් database schema එක හදාගන්නවා inventory කියලා.
මේ? දැක්කනේ?
දැන් MySQL query browser එක open කරලා, මෙන්න මේ script එක run කරගන්න ඕනේ.
DROP TABLE IF EXISTS `stock`;
CREATE TABLE `stock` (
`STOCK_ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`STOCK_CODE` VARCHAR(10) NOT NULL,
`STOCK_NAME` VARCHAR(20) NOT NULL,
PRIMARY KEY (`STOCK_ID`) USING BTREE,
UNIQUE KEY `UNI_STOCK_NAME` (`STOCK_NAME`),
UNIQUE KEY `UNI_STOCK_ID` (`STOCK_CODE`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
දන්නේ නැත්තන් ඕන්න තියෙනවා කරන හැටි.
** අහ්! මතක ඇතුව අදාල schema එක select කරලා ඕක execute කරපල්ලා.
පේනවනේ, අළුතෙන් table එකක් හැදිලා තියෙනවා? ඕක execute කරන්නේ නැතුව ඉතිං අපිට manually table එකක් හදන්න තිබ්බා. ඒත් ඉතිං මොනවටද බොලව් නිකන් කාලේ කන්නේ.
2 - project එක හදමු.
ළමායි, දැං STS (Spring tool suit) open කරගමූ.
Okay?
Then... හරිම simple. Normal java project එකක් තමයි හදන්න තියෙන්නේ.
File --> New -- > Java Project
ඔන්න මම project එක name කරනවා inventory කියලා.
ඔන්න තියෙනවා project එක.
දැන් මම src folder එක ඇතුලේ com.inventory.common කියලා package එකක් හදලා, ඒ package එක ඇතුලේ class එකක් හදා ගන්නවා App කියලා.
ඔන්න basic project structure එක හදන් ඉවරායි!
3 - Dependency (jar files) add කරමු!
** මේ project එකට අපිට specially ඕනේ කරන jar files තියෙනවා පුතාලා, ආන්න එව්වා ටික හොයලා ඇඩ් කරගන්න එක බොලාලට බාරයි.
jar file එකේ නම google එකේ කොටලා ලේසියෙන්ම ඒ වැඩේ කරගන්න පුළුවන්.
කලින් මම කියලා දීලා තියෙනවානේ project එකකට jar files add කරන හැටි? දැං ඒවා සිහි කරගනිව්!
ඔන්න ළමයිනේ...
පහල දාලා තියෙන්නේ, ඕනේ කරන jar files ටිකයි, ඒවයේ version ටිකයි. බලලා හදලා බාගනිව්!
* MySQL database driver
1 - mysql-connector-java --> 5.1.9
* Hibernate framework
2 - hibernate3 --> 3.2.3.GA
* Hibernate library dependency
3 - dom4j --> 1.6.1
4 - commons-collections --> 3.2.1
5 - cglib --> 2.2
6 - jta --> 1.1
*Others
7 - asm --> 3.1
ඔන්න මම add කරගත්තා.
හරි! ඊලඟ!
4 - Hibernate Mapping file එකයි + Model class එකයි හදමු!
මතකයිනේ? අපි හැදුවා table එකක් stock කියලා? ආන්න ඒකට තමයි මේ Hibernate Mapping file එකයි Model class එකයි .
Stock.hbm.xml කියලා XML file එකක් හදලා, ඒක project එක උඩ right click කරලා, අළුතින් resources කියලා source folder එකක් හදලා, ඒ source folder එක ඇතුලේ com.inventory.common කියලා package එකක් හදලා, ඒ package එක ඇතුලට දාගන්න ඕනේ. (හම්මේ....!!
) ඒක තමයි Hibernate Mapping file එක.
තව, Stock කියලා java file එකක් හදලා, ඒක අර src folder එක ඇතුලේ කලින් හදපු com.inventory.common package එක ඇතුලට දාගන්න ඕනේ. ඒක තමයි Model class එක.
ඔන්න ඔහොමයි දැං project structure එක.
හරි! ඔන්න දැන් අර mapping xml (Stock.hbm.xml) file එක ඇතුලට මේ ටික ඔබා ගන්න ඕනේ.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.inventory.common.Stock" table="stock" catalog="inventory">
<id name="stockId" type="java.lang.Integer">
<column name="STOCK_ID" />
<generator class="identity" />
</id>
<property name="stockCode" type="java.lang.String">
<column name="STOCK_CODE" length="10" not-null="true" unique="true" />
</property>
<property name="stockName" type="java.lang.String">
<column name="STOCK_NAME" length="20" not-null="true" unique="true" />
</property>
</class>
</hibernate-mapping>
බැලුවාම උඹලට තේරෙනවනේ මේ මොකද්ද කරලා තියෙන්නේ කියලා?
.
.
නෑ??

.
.
ඔය කරලා තියෙන්නේ, table එක (Stock) ගැන , JVM එකට තේරෙන බාසාවෙන් කියලා දෙන එක.
.
.
ඔව්!
.
.
table ගොඩක් තිබ්බොත්, ඒ හැම table එකටම මේ වගේ mapping file එකකුයි, Model class එකකුයි ඕනේ වෙනවා.

.
.
ඒවා කරදරයිනේ?
.
.
කරදරයි තමයි! ඒ issues වලට solutions තියෙනවා. බය නොවී හිටපල්ලා. basics ඉගෙන ගෙන එව්වා කියලා දෙන්නම්!

හරි! මෙන්න මෙහෙමයි mapping file එක
දැං Stock class (Model class) එක මෙන්න මේ විදියට code කරගන්නවා.
public class Stock implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private Integer stockId;
private String stockCode;
private String stockName;
public Stock() {
}
public Stock(String stockCode, String stockName) {
this.stockCode = stockCode;
this.stockName = stockName;
}
public Integer getStockId() {
return this.stockId;
}
public void setStockId(Integer stockId) {
this.stockId = stockId;
}
public String getStockCode() {
return this.stockCode;
}
public void setStockCode(String stockCode) {
this.stockCode = stockCode;
}
public String getStockName() {
return this.stockName;
}
public void setStockName(String stockName) {
this.stockName = stockName;
}
}
5 - Hibernate Configuration file එක හදමු!
** වැදගත්ම file එකක්! Database එක ගැන විස්තර, username, password, schema එක, use කරන්න ඕනේ database driver එක ගැන විස්තර තියෙන්නේ මේ එකේ තමයි.
ඇයි? map කරලා තියෙන hbm.xml ගැන? එව්වත් declare කරලා තියෙන්නේ මේකෙම තමයි!
hibernate.cfg.xml කියලා file එකක් හදලා, ඒක කෙලින්ම resource folder එක ඇතුලට දාගන්න.
ඔව් බොලව්! අර package එකට එලියෙන්.
ආන්න ඒ විදියට!
දැන් ඒකේ මේ ටික කොටා ගන්න ඕනේ!
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/inventory</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<mapping resource="com/inventory/common/Stock.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>
ඔන්න පැහැදිලි කිරීම්!
6 - Hibernate Utility class එකක් හදමු??
මේක ඉතින් පහසුවටත්, වාසියටත් තමයි හදාගන්නේ.
Hibernate framework එක initialize කිරීමේ සිට, session retrieve කිරීම්, close කිරීම් ඇතුළු මෙකී නොකී මා දන්නා නොදන්නා හැම Hibernate හු යන්නක් සඳහාම භාවිතා වේ!

ඔන්න ඕකත් අර කලින් හදාපු src folder එකේ com.inventory.common package එක ඇතුලට ඔබාපියව්! වෙන packages හද හද ඉන්න කම්මැලියෝ!
ඔය තියෙන්නේ!
7 - Main class එක code කරමු!
කලින් හදාපු App class එක මේ විදියට code කරගනිව්!
package com.inventory.common;
import org.hibernate.Session;
public class App {
public static void main( String[] args )
{
System.out.println("Hibernate + MySQL");
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Stock stock = new Stock();
stock.setStockCode("4715");
stock.setStockName("GENM");
session.save(stock);
session.getTransaction().commit();
}
}
මේ class එක තමයි අපි run කරන main class එක.
ඔන්න ඉවලායි!!!


8 - Run කරපියව්!
App class එක උඩ right click කලා --> Run as --> Java Application
ඔන්න console එකේ output එක! මොකද්දෝ මන්දා SQL statement එකක් පෙන්නනවා නේ?
ඔව් ඔව්! insert එකක් වගේ?

බලමු database එක??
ඔන්න පේනවානේ?? App class එකෙන් අපි Stock table එකට set කරපු data වලට අදාලව record එකක් add වෙලා තියෙනවා.
මේක අපි කලේ desktop application එකකටනේ...
ඒ උනාට උඹලට පුලුවන් කිසිම ගින්නක් නැතුව මේක අපේ පරණ web project එකට අමුණන්න. කරන්න තියෙන්නේ ඔය package ටිකයි, class ටිකයි copy paste කරන එක විතරයි. try කරලා බලපල්ලා! ඔය File name වලට, Package name වලට, බය වෙන්න එපා.
ඔන්න උඹලට industry එකේ එන main framework එකක් කියලා දුන්නා!
මේ කියලා දුන්න ටික සාගරේකින් දිය දෝතක් වගේ බොහොම ටිකයි! දොර හැර දී ඇත! ඉතිරිය සොයා යෑම උඹලටම බාරයි ළමයිනේ!
මේකට උඹලගේ කැපවීම අනිවාර්යයි! මට පුලුවන් බොලාට මඟ පෙන්නන්න විතරයි!
එහෙනම් හැමෝටම ජය!

මුලින්ම බලමු Hibernate කියන්නේ මොකද්ද කියලා.
** Hibernate කියන්නේ Framework එකක්.
** දැනට තියෙන හොඳම object/relational persistence (ORM) tool එකක් කිව්වොත් හරියටම හරි.
** java වලට වගේම .net වලටත් මේ වෙනකොට Hibernate support කරනවා.
ඉතිං දැං ඔය .net පොරවල් ටිකත් මේ පැත්තේ ආවට කාරියක් නෑ ඕං!

** මේක හරිම smooth බොලව්! relational database handling මාරම විදියට simplify කරලා තියෙන්නේ. ඒ වගේම හරිම elegant ඇන්ඩ් innovative.
කරගෙන යද්දී බොලාටම තේරෙයි! ඔන්න හැඳින්වීම ඉවරයි. අපි කරන්න යන්නේ Hibernate3.
** Web developing වලට Hibernate ඕනේම කියලා එකක් නෑ.

නමුත් හැමදාම SQL කොට කොට ඉන්නවට වඩා අළුත් දෙයක් ඉගෙන ගන්න එක හොඳා.....යි!

අහ්! තව එකක්, Hibernate කියන්නේ Web developing වලට විතරක් use වෙන framework එකක් නෙමෙයි.
Desktop application development, Middle-ware development මෙකී නොකී සියලූම database එකක් connect වෙන development "හු" යන්නවල් වලට use කරගන්න පුලුවන්.

ඔන්න වැඩේට බැස්සා.
වෙනසකටත් එක්ක Desktop application එකක් use කරගෙන මේක කරගෙන යමු.
නෑ නෑ!
වෙනසක් ඇත්තෙම නෑ! මේක මේ විදියටම Web application එකකත් use කරන්න පුළුවන් බොලව්.
1 - Database schema එක හදා ගමු!
මතක ඇතිනේ කලින් lesson එකක මේක අපි කලා? MySQL admin open කලා, අළුතෙන් database schema එක හදාගන්නවා inventory කියලා.
මේ? දැක්කනේ?
දැන් MySQL query browser එක open කරලා, මෙන්න මේ script එක run කරගන්න ඕනේ.
DROP TABLE IF EXISTS `stock`;
CREATE TABLE `stock` (
`STOCK_ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`STOCK_CODE` VARCHAR(10) NOT NULL,
`STOCK_NAME` VARCHAR(20) NOT NULL,
PRIMARY KEY (`STOCK_ID`) USING BTREE,
UNIQUE KEY `UNI_STOCK_NAME` (`STOCK_NAME`),
UNIQUE KEY `UNI_STOCK_ID` (`STOCK_CODE`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
දන්නේ නැත්තන් ඕන්න තියෙනවා කරන හැටි.

** අහ්! මතක ඇතුව අදාල schema එක select කරලා ඕක execute කරපල්ලා.
පේනවනේ, අළුතෙන් table එකක් හැදිලා තියෙනවා? ඕක execute කරන්නේ නැතුව ඉතිං අපිට manually table එකක් හදන්න තිබ්බා. ඒත් ඉතිං මොනවටද බොලව් නිකන් කාලේ කන්නේ.
2 - project එක හදමු.
ළමායි, දැං STS (Spring tool suit) open කරගමූ.
Okay?
Then... හරිම simple. Normal java project එකක් තමයි හදන්න තියෙන්නේ.
File --> New -- > Java Project
ඔන්න මම project එක name කරනවා inventory කියලා.
ඔන්න තියෙනවා project එක.
දැන් මම src folder එක ඇතුලේ com.inventory.common කියලා package එකක් හදලා, ඒ package එක ඇතුලේ class එකක් හදා ගන්නවා App කියලා.
ඔන්න basic project structure එක හදන් ඉවරායි!
3 - Dependency (jar files) add කරමු!
** මේ project එකට අපිට specially ඕනේ කරන jar files තියෙනවා පුතාලා, ආන්න එව්වා ටික හොයලා ඇඩ් කරගන්න එක බොලාලට බාරයි.
jar file එකේ නම google එකේ කොටලා ලේසියෙන්ම ඒ වැඩේ කරගන්න පුළුවන්.
කලින් මම කියලා දීලා තියෙනවානේ project එකකට jar files add කරන හැටි? දැං ඒවා සිහි කරගනිව්!

ඔන්න ළමයිනේ...
පහල දාලා තියෙන්නේ, ඕනේ කරන jar files ටිකයි, ඒවයේ version ටිකයි. බලලා හදලා බාගනිව්!
* MySQL database driver
1 - mysql-connector-java --> 5.1.9
* Hibernate framework
2 - hibernate3 --> 3.2.3.GA
* Hibernate library dependency
3 - dom4j --> 1.6.1
4 - commons-collections --> 3.2.1
5 - cglib --> 2.2
6 - jta --> 1.1
*Others
7 - asm --> 3.1
ඔන්න මම add කරගත්තා.
හරි! ඊලඟ!
4 - Hibernate Mapping file එකයි + Model class එකයි හදමු!
මතකයිනේ? අපි හැදුවා table එකක් stock කියලා? ආන්න ඒකට තමයි මේ Hibernate Mapping file එකයි Model class එකයි .
Stock.hbm.xml කියලා XML file එකක් හදලා, ඒක project එක උඩ right click කරලා, අළුතින් resources කියලා source folder එකක් හදලා, ඒ source folder එක ඇතුලේ com.inventory.common කියලා package එකක් හදලා, ඒ package එක ඇතුලට දාගන්න ඕනේ. (හම්මේ....!!

) ඒක තමයි Hibernate Mapping file එක.
තව, Stock කියලා java file එකක් හදලා, ඒක අර src folder එක ඇතුලේ කලින් හදපු com.inventory.common package එක ඇතුලට දාගන්න ඕනේ. ඒක තමයි Model class එක.
ඔන්න ඔහොමයි දැං project structure එක.
හරි! ඔන්න දැන් අර mapping xml (Stock.hbm.xml) file එක ඇතුලට මේ ටික ඔබා ගන්න ඕනේ.
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.inventory.common.Stock" table="stock" catalog="inventory">
<id name="stockId" type="java.lang.Integer">
<column name="STOCK_ID" />
<generator class="identity" />
</id>
<property name="stockCode" type="java.lang.String">
<column name="STOCK_CODE" length="10" not-null="true" unique="true" />
</property>
<property name="stockName" type="java.lang.String">
<column name="STOCK_NAME" length="20" not-null="true" unique="true" />
</property>
</class>
</hibernate-mapping>
බැලුවාම උඹලට තේරෙනවනේ මේ මොකද්ද කරලා තියෙන්නේ කියලා?
.
.
නෑ??


.
.
ඔය කරලා තියෙන්නේ, table එක (Stock) ගැන , JVM එකට තේරෙන බාසාවෙන් කියලා දෙන එක.
.
.
ඔව්!
.
.
table ගොඩක් තිබ්බොත්, ඒ හැම table එකටම මේ වගේ mapping file එකකුයි, Model class එකකුයි ඕනේ වෙනවා.


.
.
ඒවා කරදරයිනේ?
.
.
කරදරයි තමයි! ඒ issues වලට solutions තියෙනවා. බය නොවී හිටපල්ලා. basics ඉගෙන ගෙන එව්වා කියලා දෙන්නම්!


හරි! මෙන්න මෙහෙමයි mapping file එක
දැං Stock class (Model class) එක මෙන්න මේ විදියට code කරගන්නවා.
public class Stock implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private Integer stockId;
private String stockCode;
private String stockName;
public Stock() {
}
public Stock(String stockCode, String stockName) {
this.stockCode = stockCode;
this.stockName = stockName;
}
public Integer getStockId() {
return this.stockId;
}
public void setStockId(Integer stockId) {
this.stockId = stockId;
}
public String getStockCode() {
return this.stockCode;
}
public void setStockCode(String stockCode) {
this.stockCode = stockCode;
}
public String getStockName() {
return this.stockName;
}
public void setStockName(String stockName) {
this.stockName = stockName;
}
}
5 - Hibernate Configuration file එක හදමු!
** වැදගත්ම file එකක්! Database එක ගැන විස්තර, username, password, schema එක, use කරන්න ඕනේ database driver එක ගැන විස්තර තියෙන්නේ මේ එකේ තමයි.
ඇයි? map කරලා තියෙන hbm.xml ගැන? එව්වත් declare කරලා තියෙන්නේ මේකෙම තමයි!
hibernate.cfg.xml කියලා file එකක් හදලා, ඒක කෙලින්ම resource folder එක ඇතුලට දාගන්න.
ඔව් බොලව්! අර package එකට එලියෙන්.
ආන්න ඒ විදියට!
දැන් ඒකේ මේ ටික කොටා ගන්න ඕනේ!
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/inventory</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<mapping resource="com/inventory/common/Stock.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>
ඔන්න පැහැදිලි කිරීම්!
6 - Hibernate Utility class එකක් හදමු??
මේක ඉතින් පහසුවටත්, වාසියටත් තමයි හදාගන්නේ.
Hibernate framework එක initialize කිරීමේ සිට, session retrieve කිරීම්, close කිරීම් ඇතුළු මෙකී නොකී මා දන්නා නොදන්නා හැම Hibernate හු යන්නක් සඳහාම භාවිතා වේ!


ඔන්න ඕකත් අර කලින් හදාපු src folder එකේ com.inventory.common package එක ඇතුලට ඔබාපියව්! වෙන packages හද හද ඉන්න කම්මැලියෝ!

ඔය තියෙන්නේ!
7 - Main class එක code කරමු!
කලින් හදාපු App class එක මේ විදියට code කරගනිව්!
package com.inventory.common;
import org.hibernate.Session;
public class App {
public static void main( String[] args )
{
System.out.println("Hibernate + MySQL");
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Stock stock = new Stock();
stock.setStockCode("4715");
stock.setStockName("GENM");
session.save(stock);
session.getTransaction().commit();
}
}
මේ class එක තමයි අපි run කරන main class එක.
ඔන්න ඉවලායි!!!



8 - Run කරපියව්!
App class එක උඩ right click කලා --> Run as --> Java Application
ඔන්න console එකේ output එක! මොකද්දෝ මන්දා SQL statement එකක් පෙන්නනවා නේ?
ඔව් ඔව්! insert එකක් වගේ?


බලමු database එක??

ඔන්න පේනවානේ?? App class එකෙන් අපි Stock table එකට set කරපු data වලට අදාලව record එකක් add වෙලා තියෙනවා.

මේක අපි කලේ desktop application එකකටනේ...
ඒ උනාට උඹලට පුලුවන් කිසිම ගින්නක් නැතුව මේක අපේ පරණ web project එකට අමුණන්න. කරන්න තියෙන්නේ ඔය package ටිකයි, class ටිකයි copy paste කරන එක විතරයි. try කරලා බලපල්ලා! ඔය File name වලට, Package name වලට, බය වෙන්න එපා.
ඔන්න උඹලට industry එකේ එන main framework එකක් කියලා දුන්නා!
මේ කියලා දුන්න ටික සාගරේකින් දිය දෝතක් වගේ බොහොම ටිකයි! දොර හැර දී ඇත! ඉතිරිය සොයා යෑම උඹලටම බාරයි ළමයිනේ!
මේකට උඹලගේ කැපවීම අනිවාර්යයි! මට පුලුවන් බොලාට මඟ පෙන්නන්න විතරයි!

එහෙනම් හැමෝටම ජය!
