Book Review : KnockoutJS Starter

The folks at Packt asked me to review one of their book on KnockOut Js If you are interested in buying it (a judgment you may reserve until after you have read the review)KnockOutJs is on packt site
this is link you can go.

Eric Barnard is a Software Engineer in Champaign-Urbana, Illinois. You can find his blog at http://www.ericbarnard.com

The Packt model is an interesting one. They are an online publishing house who approach subject matter experts and offer them an advance and a good commission for writing a book for them. They have approached me a couple of times but I have turned them down on both occasions simply due to a lack of time. Given the movement towards e-readers and related devices I believe it is a business model most publishers will eventually adopt.
Overview and Structure of the Book

The first thing you will probably notice is the size of the document. This is no brief summary of the new features. This is small book of over 40 pages covering to learn a new java script librart with a full index in the back. The structure of the book is:

Business overview
Step 1 – Defining a namespace
Step 2 – Creating our Model
Step 3 – Creating a View for our Model
Step 4 – Creating a ViewModel to manage our Models
Step 5 – Working with Observable Arrays
Step 6 – Adding and removing Models from an Observable Array
Step 7 – Editing properties of a Model
Step 8 – Setting up a Master-Details view
Step 9 – Applying bindings

• There are some key features as well like MVVM model and other important features of KnockOut JS

I like this structure as it parallels the steps one would take in setting up a KnockOut JS. To add a bit of a flow to the book, they also put it in the examples,real life scenarios.

What is missing is – This book is not covering the detailed code description.Although it have how to install this library.Creating a demo application.How to start creating site, MVVM library.

Its more a starter book.This book focuses on giving the reader a firm understanding of the core concepts of Knockout, such as MVVM and data binding,
and works through real-life app development scenarios. All core components of Knockout’s amazing library are covered in detail, and strategies are outlined for getting the best use of time when developing with Knockout .

Knockout – A JavaScript library
Knockout, at its core, is a simple JavaScript file that can be included in a website or a web application to add JavaScript functionality, and provides the ability to enhance a user’s experience. By default, Knockout does nothing to your website or web application until you specifically write code to utilize it. It is important to understand the difference between Knockout and many other JavaScript “frameworks” or “libraries” as some frameworks actually change how a website or web application works when included.

The difference between this library and other java script library is as below :

Subscribables – It give an edge of catching subscriber and receiver event.A Subscribable is simply an object that has three methods and an array of Subscriptions.

Observables -The Knockout Observable is one of the first objects that leverages the Subscribable functionality, and is one of the most simple, yet powerful pieces of the Knockout library.

Observable Arrays – There are multiple value of observable .

Computed Observables-Computed Observables are arguably the most powerful feature of Knockout. You may have noticed that creating a ViewModel with nothing but Observables and Observable Arrays is a huge step up from plain JavaScript, but it would be really nice to have other properties on your
ViewModel that simply depended upon other Observables and Observable Arrays and updated themselves when their dependencies change.

Utilities -Knockout is full of many useful utilities that you can use in your application development.You can find these by exploring the
ko.utils namespace.One of utility is extend.

Data-bind statements – Knockout was designed to make binding JavaScript objects and HTML extremely easy. The API that is given to us to use is through the HTML5 compliant data-bind statement.

Applying bindings – This is key feature of knockOut JS.Book describer it very well with example.Many examples show the applyBindings function being called with a ViewModel object being passed in as the only argument, but you can also specify a DOM node as the second argument.
When passing a DOM node as the second argument, Knockout only binds your ViewModel to that node and its children.

Conclusions
This book is not a comprehensive guide to the learn knockout JS. Rather, it is It presents a Starter guide to learn and work on KnockOut JS. It descrive MVVM model with detailed description.Worth of reading.

Different Hibernate object states and their lifecycle in Hibernate | Techartifact

There are 3 hibernate object state

1.) Persistent– Persistent object and collections are short lived single threaded objects, which store the persistence state. These objects synchronize their state with database depending on your flush strategy(i.e auto flush where as soon as setXXX() method is called or an item is removed from a set,list etc or define your own synchronization points with session.flush().transaction.commit() calls.) If you remove an item from persistence collections like a Set, it will be removed from database either immediately or when flush() or commit() is called depending on your flush strategy. They are plain old java objects(POJO) and are currently associated with session. As soon as the associated session is closed , persistence objects become detached objects and are free to use directly as data transfer objects in any application layer like business Layers, presentation layer etc.

2.) Detached – These objects and collection are instances of persistence objects that were associated with a session but currently not with associated with session. These objects can be freely used as Data Transfer Objects without having any impact on your database .Detached objects can be later on attached to another session by calling methods like session.update(), session.saveOrUpdate() etc and become persistence objects.

3.) Transient – These objects and collection are instance of persistence object that were never associated with session.These objects can be freely used as Data transfer objects without having any impact on your database. Transient objects become persistent objects when associated to session by calling session.save(), session.persist() etc.

4.) Removed State -A previously persistent object that is deleted from the database session.delete(account).Java instance may still exist, but it is ignored by Hibernate -Any changes made to the object are not saved to the database Picked up for garbage collection once it falls out
of scope
• Hibernate does not null-out the in-memory object

Creating new row of view object in ADF | Techartifact

Requirment – Creating new rows through the view object

Solution-Create a new view row by calling createRow() on the view object as shown in the following code snippet:

/**The createEmployee is a custom method defined in application
* module implementation class.
*/


public void createEmployee () {
//Get the view object
ViewObject employee= findViewObject("EmployeeVO");
// Create a row and fill in the columns.
Row row = employee.createRow();
row.setAttribute("Name", "Vinay");
row.setAttribute("EmpId", 1);
//Insert row in to the default row set
employee.insertRow(row);
}


You can also use createAndInitRow(AttributeList initVals) on the view object to create a new view row. This API allows you to initialize the row with an attribute list.